カテゴリ:

ビット単位の式関数

BITSHIFTLEFT

数値式 n のビットを左にシフトします。

エイリアス:

BIT_SHIFTLEFT

こちらもご覧ください:

BITSHIFTRIGHT

構文

BITSHIFTLEFT( <expr1> , <n> )

引数

式1

この式は、 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;

出力:

+------+-------+-----------------------+------------------------+
| BIT1 |  BIT2 | BITSHIFTLEFT(BIT1, 1) | BITSHIFTRIGHT(BIT2, 1) |
|------+-------+-----------------------+------------------------|
|    1 |     1 |                     2 |                      0 |
|    2 |     4 |                     4 |                      2 |
|    4 |     2 |                     8 |                      1 |
|   16 |    24 |                    32 |                     12 |
|    0 | 65504 |                     0 |                  32752 |
| NULL |  NULL |                  NULL |                   NULL |
+------+-------+-----------------------+------------------------+