8.9. Types champs de bits

Les champs de bits sont des chaînes de 0 et de 1. Ils peuvent être utilisés pour stocker ou visualiser des masques de bits. Il y a deux types champs de bits SQL: bit(n) et bit varying(n), où n est un entier positif.

Les données de type bit doivent avoir une longueur de exactement n bits. Essayer d'y affecter une chaîne de bits plus longue ou plus courte déclenche une erreur. Les données de type bit varying ont une longueur variable, mais ne peuvent dépasser une taille de n bits. Les chaînes plus longues sont rejetées. Écrire bit sans longueur est équivalent à bit(1), alors que bit varying sans longueur indique une taille illimitée.

Note : Lors d'un transtypage explicite (cast) d'une chaîne de bits vers un champ de type bit(n), la chaîne obtenue sera complétée avec des zéros ou bien tronquée, pour obtenir une taille d'exactement n bits, sans que cela produise une erreur. De la même façon, si une chaîne de bits est explicitement transtypée vers un champ de type bit varying(n), elle sera tronquée si elle fait plus de n bits.

Note : Avant PostgreSQL 7.2, les données de type bit étaient toujours tronquées (ou complétées avec des zéros) silencieusement, que le transtypage soit explicite ou non. Ce comportement a été modifié pour se conformer au standard SQL.

Voir Section 4.1.2.2 pour plus d'information sur la syntaxe des constantes de champ de bits. Les opérateurs logiques bit à bit et les manipulations de chaînes de bits sont décrits dans Chapitre 9.

Exemple 8-3. Utilisation des types de champs de bits

CREATE TABLE test (a BIT(3), b BIT VARYING(5));
INSERT INTO test VALUES (B'101', B'00');
INSERT INTO test VALUES (B'10', B'101');
ERROR:  bit string length 2 does not match type bit(3)
INSERT INTO test VALUES (B'10'::bit(3), B'101');
SELECT * FROM test;
  a  |  b
-----+-----
 101 | 00
 100 | 101