- カテゴリ:
BITSHIFTLEFT¶
数値式 n
のビットを左にシフトします。
- エイリアス:
BIT_SHIFTLEFT
- こちらもご覧ください:
構文¶
BITSHIFTLEFT( <expr1> , <n> )
引数¶
expr1
この式は、
INTEGER
にキャストできるデータ型に評価される必要があります。n
シフトするビット数です。
戻り値¶
これは、入力データ値のサイズまたはデータ型に関係なく、符号付き128ビット(16バイト)整数を返します。
使用上の注意¶
いずれかの引数のデータ型が数値で
INTEGER
ではない場合(例: FLOAT、 DECIMAL など)、引数はINTEGER
にキャストされます。任意の引数のデータ型が文字列(例:
VARCHAR
)の場合、可能であれば引数はINTEGER
にキャストされます。たとえば、文字列「12.3」は12にキャストされます。値をINTEGER
にキャストできない場合、値は NULL として扱われます。いずれかの引数が NULL の場合、結果は NULL になります。
結果は符号付き整数です。上位ビットの値が変更されると(0から1、または1から0に)、結果の符号が反転します。たとえば、
BITSHIFTLEFT(1, 127)
は負の数を返します。128ビットの出力値の末尾を超えてシフトされたビットはドロップされます。
例¶
この例は、 BITSHIFTLEFT
および BITSHIFTRIGHT
の使用方法を示しています。
簡単なテーブルとデータを作成します。
CREATE TABLE bits (ID INTEGER, bit1 INTEGER, bit2 INTEGER);INSERT INTO bits (ID, bit1, bit2) VALUES ( 11, 1, 1), -- Bits are all the same. ( 24, 2, 4), -- Bits are all different. ( 42, 4, 2), -- Bits are all different. ( 1624, 16, 24), -- Bits overlap. (65504, 0, 65504), -- Lots of bits (all but the low 6 bits) ( 0, NULL, NULL) -- No bits ;クエリを実行します。
SELECT bit1, bit2, BITSHIFTLEFT(bit1, 1), BITSHIFTRIGHT(bit2, 1) FROM bits ORDER BY bit1;出力:
+------+-------+-----------------------+------------------------+ | BIT1 | BIT2 | BITSHIFTLEFT(BIT1, 1) | BITSHIFTRIGHT(BIT2, 1) | |------+-------+-----------------------+------------------------| | 0 | 65504 | 0 | 32752 | | 1 | 1 | 2 | 0 | | 2 | 4 | 4 | 2 | | 4 | 2 | 8 | 1 | | 16 | 24 | 32 | 12 | | NULL | NULL | NULL | NULL | +------+-------+-----------------------+------------------------+