MySQLのビット演算でフラグ情報をビットで持つなど
同僚とMySQLのビット演算でフラグ情報持てるんじゃないか?
という話になり実際にやってみた。
以下のSQLでテーブル作成&初期データINSERT
CREATE TABLE hoge(id int); INSERT INTO hoge VALUES(conv(100,2,10)); -- 10進数の4をINSERT INSERT INTO hoge VALUES(conv(111,2,10)); -- 10進数の7をINSERT INSERT INTO hoge VALUES(conv(001,2,10)); -- 10進数の1をINSERT
以下のSQLで論理積演算をして2進数の100でヒットするものを返す。
この場合4と7がヒットする。
SELECT id FROM hoge WHERE id & conv(100,2,10); +------+ | id | +------+ | 4 | | 7 | +------+ 2 rows in set (0.00 sec)
これで1カラムで複数の状態を管理できるんじゃなかろうか。
多分やらないけど。