Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Bester Datentyp zum Speichern einer langen Zahl aus 0 und 1

Was Sie zeigen, sind Binärzahlen

  • 0000000 =0
  • 0000001 =2^0 =1
  • 0000010 =2^1 =2
  • 0000011 =2^0 + 2^1 =3

Speichern Sie diese Zahlen also einfach in einem ganzzahligen Datentyp (der natürlich wie gezeigt intern mit Bits gespeichert wird). Sie könnten dafür BIGINT verwenden, wie es in der Dokumentation für bitweise Operationen empfohlen wird (http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html ).

So setzen Sie Flag n:

UPDATE mytable
SET bitmask = POW(2, n-1)
WHERE id = 12345;

So fügen Sie ein Flag hinzu:

UPDATE mytable
SET bitmask = bitmask | POW(2, n-1)
WHERE id = 12345;

So überprüfen Sie ein Flag:

SELECT *
FROM mytable
WHERE bitmask & POW(2, n-1)

Aber wie in den Kommentaren erwähnt:In einer relationalen Datenbank verwenden Sie normalerweise Spalten und Tabellen, um Attribute und Beziehungen anzuzeigen, und nicht eine codierte Flag-Liste.