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