作成日:2018-08-09, 更新日:2023-10-18
基本
select * from 〇〇〇 where 〇〇&〇〇
▼「カラム:group」と「2」の「ビット積」が「真」になるレコード取得
select * from 〇〇〇 where `group`&2;
例
パーミッションを表した下記のようなテーブルがあるとして・・・「書き込み権限(w)を含むレコードを取得したい」ってコトをする場合。
name | permission |
---|---|
---(000) | 0 |
--r(001) | 1 |
-w-(010) | 2 |
x--(100) | 3 |
-wr(011) | 4 |
x-r(101) | 5 |
xwr(111) | 6 |
▼クエリ
select * from 〇〇〇 where `permission`&2;
→「-w-(010)」「-wr(011)」「xwr(111)」が取得される
めも
たとえば、支払い方法が「現金、カード、電子マネー」のどれに対応しているのかってコトをどうにかしたい。
最終的に下記のような「現金」対応している店舗一覧を取得したい。
店舗A | 現金 |
店舗B | 現金、カード |
店舗D | 現金、カード、電子マネー |
テーブル構成は色々とあるだろうし、正解は分からないが・・・ビット積が使える
カラム:name | カラム:value(1:現金、2:カード、4:電子マネー) | コメント(支払方法の対応状況) |
---|---|---|
店舗A | 1 | --1:現金 |
店舗B | 3 | -11:現金、カード |
店舗C | 6 | 11-:カード、電子マネー |
店舗D | 7 | 111:現金、カード、電子マネー |
店舗E | 2 | -1-:カード |
※このテーブルに支払方法ごとのカラムを持たせる必要がなくなる。