8.11.2 BITLSHIFT
バイナリデータを左ビットシフトした値を返します。
- 〈この項の構成〉
(1) 指定形式
スカラ関数BITLSHIFT::=BITLSHIFT(対象データ,シフトビット数) 対象データ::=値式 シフトビット数::=値式
(2) 指定形式の説明
- 対象データ:
-
バイナリデータを指定します。
指定規則を次に示します。
-
対象データは,値式の形式で指定します。値式については,「7.21 値式」を参照してください。
-
対象データには,BINARY型またはVARBINARY型のデータを指定してください。
-
対象データには,?パラメタを単独で指定できません。
-
- シフトビット数:
-
シフトビット数を指定します。
指定規則を次に示します。
-
シフトビット数は,値式の形式で指定します。値式については,「7.21 値式」を参照してください。
-
シフトビット数には,整数(INTEGER型またはSMALLINT型のデータ)を指定してください。
-
シフトビット数に正の値を指定した場合,対象データを左ビットシフトした値を返します。
-
シフトビット数に負の値を指定した場合,対象データを右ビットシフトした値を返します。
-
シフトビット数に0を指定した場合,対象データと同じバイナリデータを返します。
-
シフトビット数に?パラメタを単独で指定した場合,?パラメタに仮定されるデータ型はINTEGER型になります。
-
スカラ関数BITLSHIFTの実行結果の例を次に示します。
- (例)
-
指定したバイナリデータを左ビットシフトした値を返します。
BITLSHIFT(B'01011011',1) → B'10110110'
BITLSHIFT(B'01011011',8) → B'00000000'
BITLSHIFT(B'01011011',0) → B'01011011'
BITLSHIFT(X'0F0F',8) → X'0F00'
シフトビット数に負の値を指定した場合,対象データを右ビットシフトした値を返します。
BITLSHIFT(B'01011011',-3) → B'00001011'
BITLSHIFT(X'0F0F',-16) → X'0000'
(3) 規則
-
ビットがシフトしたことによって空いたビットにはB'0'が補われます。
-
対象データのデータ長(対象データがVARBINARY型の場合は実長)がmバイトであり,シフトビット数がnの場合,BITLSHIFTの実行結果は次の表に示すようになります。
表8‒40 BITLSHIFTの実行結果 条件
BITLSHIFTの実行結果
n>0の場合
8×m≦nの場合
対象データのデータ長(対象データがVARBINARY型の場合は実長)のバイト数分,X'00'となるバイナリデータを返します。
0<n<8×mの場合
nビット分,対象データを左ビットシフトしたバイナリデータを返します。
n=0の場合
対象データと同じバイナリデータを返します。
n<0の場合
0<|n|<8×m
|n|ビット分,対象データを右ビットシフトしたバイナリデータを返します。
上記以外
対象データのデータ長(対象データがVARBINARY型の場合は実長)のバイト数分,X'00'となるバイナリデータを返します。
-
対象データのデータ型とデータ長が,実行結果のデータ型とデータ長になります。
-
実行結果の値は,非ナル値制約なし(ナル値を許す)となります。
-
対象データまたはシフトビット数のどちらかがナル値の場合,実行結果はナル値になります。
-
対象データが実長0バイトのバイナリデータの場合,実行結果は実長0バイトのバイナリデータになります。