- カテゴリ:
BITNOT¶
数値またはバイナリ式のビット単位の否定を返します。
- エイリアス:
BIT_NOT
構文¶
BITNOT( <expr> )
引数¶
expr
この式は、 INTEGER 値、BINARY 値、または INTEGER 値にキャストできるデータ型の値に評価される必要があります。
戻り値¶
INTEGER 値、 BINARY 値、または NULL を返します。
入力式に INTEGER 値が含まれている場合、入力式のビット単位の否定を表す INTEGER 値を返します。
入力式に BINARY 値が含まれている場合、入力式のビット単位の否定を表す BINARY 値を返します。
入力値が NULL の場合、 NULL を返します。
使用上の注意¶
引数のデータ型が 数値 で INTEGER ではない場合(例: FLOAT、 DECIMAL など)、引数は INTEGER 値にキャストされます。
引数のデータ型が文字列(VARCHAR など)の場合、可能であれば引数は INTEGER 値にキャストされます。例えば、文字列
12.3
は12
にキャストされます。値を INTEGER 値にキャストできない場合、値は NULL として扱われます。この関数は、引数を暗黙的に BINARY 値にキャストしません。
例¶
以下のセクションには、 INTEGER 引数値と BINARY 引数値の例が含まれています。
INTEGER 引数値での BITNOT の使用¶
簡単なテーブルとデータを作成します。
CREATE OR REPLACE 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,
BITNOT(bit1),
BITNOT(bit2)
FROM bits
ORDER BY bit1;
+------+-------+--------------+--------------+
| BIT1 | BIT2 | BITNOT(BIT1) | BITNOT(BIT2) |
|------+-------+--------------+--------------|
| 0 | 65504 | -1 | -65505 |
| 1 | 1 | -2 | -2 |
| 2 | 4 | -3 | -5 |
| 4 | 2 | -5 | -3 |
| 16 | 24 | -17 | -25 |
| NULL | NULL | NULL | NULL |
+------+-------+--------------+--------------+
BINARY 引数値での BITNOT の使用¶
簡単なテーブルを作成し、データを挿入します。
CREATE OR REPLACE TABLE bits (ID INTEGER, bit1 BINARY(2), bit2 BINARY(2), bit3 BINARY(4));
INSERT INTO bits VALUES
(1, x'1010', x'0101', x'11001010'),
(2, x'1100', x'0011', x'01011010'),
(3, x'BCBC', x'EEFF', x'ABCDABCD'),
(4, NULL, NULL, NULL);
注釈
BINARY 値は、 x'value'
表記で挿入されます。 value
には16進数が含まれています。詳細については、 バイナリ入出力 をご参照ください。
クエリを実行します。
SELECT bit1,
bit2,
bit3,
BITNOT(bit1),
BITNOT(bit2),
BITNOT(bit3)
FROM bits;
+------+------+----------+--------------+--------------+--------------+
| BIT1 | BIT2 | BIT3 | BITNOT(BIT1) | BITNOT(BIT2) | BITNOT(BIT3) |
|------+------+----------+--------------+--------------+--------------|
| 1010 | 0101 | 11001010 | EFEF | FEFE | EEFFEFEF |
| 1100 | 0011 | 01011010 | EEFF | FFEE | FEFEEFEF |
| BCBC | EEFF | ABCDABCD | 4343 | 1100 | 54325432 |
| NULL | NULL | NULL | NULL | NULL | NULL |
+------+------+----------+--------------+--------------+--------------+