mysqlでビットマスクを使用したテーブルから、複数レコードを抽出する方法

以下のようなビットマスクを利用したテーブルを作成した時、
それを抽出するためのSQL文を紹介します。

■対象のテーブル
 
 テーブル名:名産
 100308-01

■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]共に同じ)
   
   お茶

■ポイント!
 ビット値を条件に抽出を行う際には、&(アンパサンド)を利用する!

コメント

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