sql >> Databáze >  >> RDS >> Mysql

Nejlepší datový typ pro uložení dlouhého čísla vyrobeného z 0 a 1

To, co ukazujete, jsou binární čísla

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

Jednoduše tedy uložte tato čísla do datového typu typu integer (který je samozřejmě interně uložen s bity, jak je ukázáno). K tomu můžete použít BIGINT, jak je doporučeno v dokumentech pro bitové operace (http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html ).

Zde je návod, jak nastavit příznak n:

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

Zde je návod, jak přidat příznak:

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

Zde je návod, jak zkontrolovat příznak:

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

Ale jak je zmíněno v komentářích:V relační databázi obvykle používáte sloupce a tabulky k zobrazení atributů a vztahů spíše než kódovaný seznam příznaků.



  1. Porovnejte dva řádky a identifikujte sloupce, jejichž hodnoty se liší

  2. Dynamické názvy sloupců v zobrazení (Postgres)

  3. Operátor `~` (tilda) v booleovském fulltextovém vyhledávání v MySQL se nechová tak, jak je uvedeno na webu pro vývojáře MySQL

  4. Co je Microsoft Access? Stručný úvod pro nové uživatele