以下のようなビットマスクを利用したテーブルを作成した時、
それを抽出するためのSQL文を紹介します。
■対象のテーブル
テーブル名:名産
■SQLサンプル
◆「お茶」と「わさび」のレコードを抽出する場合
・[1.a] ORを使用した抽出方法
SELECT `名産`.項目
FROM `名産`
WHERE `ID(ビット値)` = 1 OR WHERE `ID(ビット値)` = 4
・[1.b] ビット値を条件にした抽出方法
SELECT `名産`.項目
FROM `名産`
WHERE `ID(ビット値)` & 5
・抽出結果([1.a],[1.b]共に同じ)
お茶
わさび
※[1.b]のwhere句の5(1+4)は、「お茶」=1, 「わさび」=4の合計値
◆「お茶」のレコードを抽出する場合
・[2.a] 通常??の抽出方法
SELECT `名産`.項目
FROM `名産`
WHERE `ID(ビット値)` = 1
・[2.b] ビット値を条件にした抽出方法
SELECT `名産`.項目
FROM `名産`
WHERE `ID(ビット値)` & 1
・抽出結果([2.a],[2.b]共に同じ)
お茶
■ポイント!
ビット値を条件に抽出を行う際には、&(アンパサンド)を利用する!
コメント