Mysql
 sql >> база данни >  >> RDS >> Mysql

Най-добрият тип данни за съхраняване на дълго число, съставено от 0 и 1

Това, което показвате, са двоични числа

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

Така че просто съхранявайте тези числа в целочислен тип данни (който се съхранява вътрешно с битове, както е показано, разбира се). Можете да използвате BIGINT за това, както се препоръчва в документите за битови операции (http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html ).

Ето как да зададете флаг n:

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

Ето как да добавите флаг:

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

Ето как да проверите флаг:

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

Но както се споменава в коментарите:В релационна база данни обикновено използвате колони и таблици, за да показвате атрибути и релации, а не кодиран списък с флагове.



  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

  2. как да съхранявам знаци за акцент върху знаци в моята база данни

  3. Производителност на RegEx срещу LIKE в MySql заявки

  4. MySQL - Как да филтрирам и показвам максимална стойност от група?

  5. грешка 1265. Данните са съкратени за колона при опит за зареждане на данни от txt файл