sql >> Base de Datos >  >> RDS >> Mysql

El mejor tipo de datos para almacenar un número largo compuesto por 0 y 1

Lo que estás mostrando son números binarios

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

Así que simplemente almacene estos números en un tipo de datos entero (que se almacena internamente con bits como se muestra, por supuesto). Podría usar BIGINT para esto, como se recomienda en los documentos para operaciones bit a bit (http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html ).

Aquí se explica cómo establecer el indicador n:

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

Así es como se agrega una bandera:

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

Así es como se comprueba una bandera:

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

Pero como se menciona en los comentarios:en una base de datos relacional, generalmente usa columnas y tablas para mostrar atributos y relaciones en lugar de una lista de indicadores codificada.