Det du visar är binära tal
- 0000000 =0
- 0000001 =2^0 =1
- 0000010 =2^1 =2
- 0000011 =2^0 + 2^1 =3
Så helt enkelt lagra dessa siffror i en heltalsdatatyp (som är internt lagrad med bitar som naturligtvis visas). Du kan använda BIGINT för detta, som rekommenderas i dokumenten för bitvisa operationer (http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html ).
Så här ställer du in flagga n:
UPDATE mytable
SET bitmask = POW(2, n-1)
WHERE id = 12345;
Så här lägger du till en flagga:
UPDATE mytable
SET bitmask = bitmask | POW(2, n-1)
WHERE id = 12345;
Så här kontrollerar du en flagga:
SELECT *
FROM mytable
WHERE bitmask & POW(2, n-1)
Men som nämnts i kommentarerna:I en relationsdatabas använder du vanligtvis kolumner och tabeller för att visa attribut och relationer snarare än en kodad flagglista.