MySQL で ビットマスク を扱う

MySQLで、テーブルの項目(type)がビットとして保存されている場合

1 真面目
2 面白い
4 硬派
8 草食系

といったtypeがあるとする

検索条件に指定する

「まじめ」のみを検索したいときは

select * from hito where type & 1;

真面目と硬派のどちらかがチェックされているデータを抽出したい場合

select * from hito where type & 1 or type & 4;

真面目と硬派がどちらもチェックされているデータを抽出する場合

select * from hito where type & 1 and type & 4;

検索結果にテキストで表示する

select if(type & 1, '真面目', '') as '真面目' from hito;