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に属するのも、その両方のグループに属するものといったような集合を扱うにはちょうど良い方法です。
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)」を
使用します。