Mysql
 sql >> Base de données >  >> RDS >> Mysql

Meilleur type de données pour stocker un nombre long composé de 0 et 1

Ce que vous montrez sont des nombres binaires

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

Stockez donc simplement ces nombres dans un type de données entier (qui est stocké en interne avec des bits, comme indiqué bien sûr). Vous pouvez utiliser BIGINT pour cela, comme recommandé dans la documentation pour les opérations au niveau du bit (http://dev.mysql.com/doc/refman/5.7/en/bit-functions.html ).

Voici comment définir l'indicateur n :

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

Voici comment ajouter un indicateur :

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

Voici comment vérifier un indicateur :

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

Mais comme mentionné dans les commentaires :dans une base de données relationnelle, vous utilisez généralement des colonnes et des tables pour afficher les attributs et les relations plutôt qu'une liste d'indicateurs codée.