sql >> Database >  >> RDS >> Mysql

Beste datatype om een ​​lang getal van 0 en 1 op te slaan

Wat je laat zien zijn binaire getallen

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

Dus sla deze getallen eenvoudig op in een geheel getal gegevenstype (dat intern wordt opgeslagen met bits zoals natuurlijk getoond). U kunt hiervoor BIGINT gebruiken, zoals aanbevolen in de documenten voor bitsgewijze bewerkingen (http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html ).

Zo stelt u vlag n in:

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

Zo voegt u een vlag toe:

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

Zo controleert u een vlag:

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

Maar zoals vermeld in de opmerkingen:in een relationele database gebruik je meestal kolommen en tabellen om attributen en relaties weer te geven in plaats van een gecodeerde vlaggenlijst.



  1. PHP undefined variabele mysqli-verbinding

  2. Sql-query om de som te achterhalen tegen individuele id

  3. FOUT:operator bestaat niet:numeriek ~* onbekend

  4. Opvolging van cursoropties