Hitachi

Hitachi Advanced Data Binder SQLリファレンス


8.11.2 BITLSHIFT

バイナリデータを左ビットシフトした値を返します。

〈この項の構成〉

(1) 指定形式

スカラ関数BITLSHIFT::=BITLSHIFT(対象データ,シフトビット数)
 
  対象データ::=値式
  シフトビット数::=値式

(2) 指定形式の説明

対象データ

バイナリデータを指定します。

指定規則を次に示します。

  • 対象データは,値式の形式で指定します。値式については,「7.20 値式」を参照してください。

  • 対象データには,BINARY型またはVARBINARY型のデータを指定してください。

  • 対象データには,?パラメタを単独で指定できません。

シフトビット数

シフトビット数を指定します。

指定規則を次に示します。

  • シフトビット数は,値式の形式で指定します。値式については,「7.20 値式」を参照してください。

  • シフトビット数には,整数(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) 規則

  1. ビットがシフトしたことによって空いたビットにはB'0'が補われます。

  2. 対象データのデータ長(対象データがVARBINARY型の場合は実長)がmバイトであり,シフトビット数がnの場合,BITLSHIFTの実行結果は次の表に示すようになります。

    表8‒40 BITLSHIFTの実行結果

    条件

    BITLSHIFTの実行結果

    n>0の場合

    mnの場合

    対象データのデータ長(対象データがVARBINARY型の場合は実長)のバイト数分,X'00'となるバイナリデータを返します。

    0<n<8×mの場合

    nビット分,対象データを左ビットシフトしたバイナリデータを返します。

    n=0の場合

    対象データと同じバイナリデータを返します。

    n<0の場合

    0<|n|<8×m

    n|ビット分,対象データを右ビットシフトしたバイナリデータを返します。

    上記以外

    対象データのデータ長(対象データがVARBINARY型の場合は実長)のバイト数分,X'00'となるバイナリデータを返します。

  3. 対象データのデータ型とデータ長が,実行結果のデータ型とデータ長になります。

  4. 実行結果の値は,非ナル値制約なし(ナル値を許す)となります。

  5. 対象データまたはシフトビット数のどちらかがナル値の場合,実行結果はナル値になります。

  6. 対象データが実長0バイトのバイナリデータの場合,実行結果は実長0バイトのバイナリデータになります。