Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Najlepszy typ danych do przechowywania długich liczb składających się z 0 i 1

To, co pokazujesz, to liczby binarne

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

Więc po prostu przechowuj te liczby w typie danych całkowitych (który jest wewnętrznie przechowywany z bitami, jak pokazano oczywiście). Możesz użyć do tego BIGINT, zgodnie z zaleceniami w dokumentacji dla operacji bitowych (http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html ).

Oto jak ustawić flagę n:

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

Oto jak dodać flagę:

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

Oto jak sprawdzić flagę:

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

Ale jak wspomniano w komentarzach:W relacyjnej bazie danych zwykle używa się kolumn i tabel do pokazywania atrybutów i relacji, a nie zakodowanej listy flag.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL i PHP — Nie unikatowa tabela/alias

  2. Jak przeanalizować duży plik CSV bez limitu czasu?

  3. Dostęp do danych z serwletu

  4. Jak stworzyć stół TYMCZASOWY w laravelu

  5. Wyprowadzić listę rekordów MySQL pogrupowanych według kategorii?