Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Melhor tipo de dados para armazenar um número longo feito de 0 e 1


O que você está mostrando são números binários
  • 0000000 =0
  • 0000001 =2^0 =1
  • 0000010 =2^1 =2
  • 0000011 =2^0 + 2^1 =3

Então, simplesmente armazene esses números em um tipo de dados inteiro (que é armazenado internamente com bits, como mostrado, é claro). Você pode usar BIGINT para isso, conforme recomendado nos documentos para operações bit a bit (http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html ).

Aqui está como definir o sinalizador n:
UPDATE mytable
SET bitmask = POW(2, n-1)
WHERE id = 12345;

Veja como adicionar um sinalizador:
UPDATE mytable
SET bitmask = bitmask | POW(2, n-1)
WHERE id = 12345;

Veja como verificar um sinalizador:
SELECT *
FROM mytable
WHERE bitmask & POW(2, n-1)

Mas, como mencionado nos comentários:Em um banco de dados relacional, você geralmente usa colunas e tabelas para mostrar atributos e relações, em vez de uma lista de sinalizadores codificada.