SQLでビット演算を行う

プログラミング SQL Server

SQLServerのT-SQLでビット演算を使って、該当のデータを探し出します。

スポンサーリンク

SQLServerでのビット演算

SQLServerのT-SQLでビット演算を使って、該当のデータを探し出します。

SQLServerのT-SQLでビット演算を利用するには記号
「&(論理積・AND)」、「|(論理和OR)」「^(排他的論理和XOR)」を
使用します。

実行するSQL

以下が実行するSQLです。

CREATE TABLE test_table
(
    flag    int  DEFAULT 0
    ,name   VARCHAR(50)
)

INSERT INTO test_table VALUES (1,'グループ1-1')
INSERT INTO test_table VALUES (2,'グループ2-1')
INSERT INTO test_table VALUES (3,'グループ1・2-1')
INSERT INTO test_table VALUES (1,'グループ1-2')
INSERT INTO test_table VALUES (2,'グループ2-2')
INSERT INTO test_table VALUES (3,'グループ1・2-2')

SELECT name FROM test_table WHERE flag & 1 != 0
SELECT name FROM test_table WHERE flag & 2 != 0
SELECT name FROM test_table WHERE flag & 3 != 0

DROP  TABLE test_table

SQLを実行した結果

1で論理積をとった結果

name
グループ1-1
グループ1・2-1
グループ1-2
グループ1・2-2

2で論理積をとった結果

name
グループ2-1
グループ1・2-1
グループ2-2
グループ1・2-2

3で論理積をとった結果

name
グループ1-1
グループ2-1
グループ1・2-1
グループ1-2
グループ2-2
グループ1・2-2

利用シーン

以下のようなベン図でグループ1に属するもの、グループ2に属するのも、その両方のグループに属するものといったような集合を扱うにはちょうど良い方法です。
benzu

Oracleでのビット演算

Oracleでのビット演算は

BITAND( number1 , number2 ) 
BITOR( expr1 , expr2 )
BITXOR( expr1 , expr2 )

という関数が用意されています。

MySQLでのビット演算

MySQLでのビット演算はSQLserverのT-SQLと同様に
「&(論理積・AND)」、「|(論理和OR)」「^(排他的論理和XOR)」を
使用します。

PostgreSQLでのビット演算

PostgreSQLでのビット演算はSQLserverのT-SQLと同様に
「&(論理積・AND)」、「|(論理和OR)」「^(排他的論理和XOR)」を
使用します。

タイトルとURLをコピーしました