カテゴリ:

ビット単位の式関数

BITXOR

2つの数値式のビット単位 XOR を返します。

エイリアス:

BIT_XOR

こちらもご参照ください。

BITXOR_AGG

構文

BITXOR( <expr1> , <expr2> )
Copy

引数

expr1

この式は、 INTEGER にキャストできるデータ型に評価される必要があります。

expr2

この式は、 INTEGER にキャストできるデータ型に評価される必要があります。

戻り値

入力式のビット単位 XOR を表す整数を返します。

使用上の注意

  • いずれかの引数のデータ型が数値で INTEGER ではない場合(例: FLOAT、 DECIMAL など)、引数は INTEGER にキャストされます。

  • いずれかの引数のデータ型が文字列( VARCHAR など)の場合、可能であれば引数は INTEGER にキャストされます。たとえば、文字列「12.3」は12にキャストされます。値を INTEGER にキャストできない場合、値は NULL として扱われます。

  • いずれかの値が NULLの場合、結果は NULLになります。

この例は、 BITAND()BITOR()BITXOR() の使用方法を示しています。

簡単なテーブルとデータを作成します。

CREATE TABLE bits (ID INTEGER, bit1 INTEGER, bit2 INTEGER);
Copy
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
    ;
Copy

クエリを実行します。

SELECT bit1, bit2, BITAND(bit1, bit2), BITOR(bit1, bit2), BITXOR(bit1, BIT2)
  FROM bits
  ORDER BY bit1;
Copy

出力:

+------+-------+--------------------+-------------------+--------------------+
| BIT1 |  BIT2 | BITAND(BIT1, BIT2) | BITOR(BIT1, BIT2) | BITXOR(BIT1, BIT2) |
|------+-------+--------------------+-------------------+--------------------|
|    0 | 65504 |                  0 |             65504 |              65504 |
|    1 |     1 |                  1 |                 1 |                  0 |
|    2 |     4 |                  0 |                 6 |                  6 |
|    4 |     2 |                  0 |                 6 |                  6 |
|   16 |    24 |                 16 |                24 |                  8 |
| NULL |  NULL |               NULL |              NULL |               NULL |
+------+-------+--------------------+-------------------+--------------------+
Copy