表示しているのは2進数です
- 0000000 =0
- 0000001 =2 ^ 0 =1
- 0000010 =2 ^ 1 =2
- 0000011 =2 ^ 0 + 2 ^ 1 =3
したがって、これらの数値を整数データ型に格納するだけです(もちろん、ビットとともに内部的に格納されます)。これには、ビット演算のドキュメントで推奨されているように、BIGINTを使用できます( http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html 。
フラグnを設定する方法は次のとおりです:
UPDATE mytable
SET bitmask = POW(2, n-1)
WHERE id = 12345;
フラグを追加する方法は次のとおりです。
UPDATE mytable
SET bitmask = bitmask | POW(2, n-1)
WHERE id = 12345;
フラグを確認する方法は次のとおりです。
SELECT *
FROM mytable
WHERE bitmask & POW(2, n-1)
ただし、コメントで述べたように、リレーショナルデータベースでは、通常、エンコードされたフラグリストではなく、列とテーブルを使用して属性とリレーションを表示します。