Cette section décrit les fonctions et opérateurs d'examen et de manipulation des chaînes de bits, c'est-à-dire des valeurs de types bit et bit varying. En dehors des opérateurs de comparaison habituels, les opérateurs présentés dans le Tableau 9.10, « Opérateurs sur les chaînes de bits » peuvent être utilisés. Les opérandes de chaînes de bits utilisés avec &, | et # doivent être de même longueur. Lors d'un décalage de bits, la longueur originale de la chaîne est préservée comme le montrent les exemples.
Tableau 9.10. Opérateurs sur les chaînes de bits
Opérateur | Description | Exemple | Résultat |
---|---|---|---|
|| | concaténation | B'10001' || B'011' | 10001011 |
& | AND bit à bit | B'10001' & B'01101' | 00001 |
| | OR bit à bit | B'10001' | B'01101' | 11101 |
# | XOR bit à bit | B'10001' # B'01101' | 11100 |
~ | NOT bit à bit | ~ B'10001' | 01110 |
<< | décalage gauche bit à bit | B'10001' << 3 | 01000 |
>> | décalage droit bit à bit | B'10001' >> 2 | 00100 |
Les fonctions SQL suivantes fonctionnent sur les chaînes de bits ainsi que sur les chaînes de caractères : length, bit_length, octet_length, position, substring.
De plus, il est possible de convertir des valeurs intégrales vers ou depuis le type bit. Quelques exemples :
44::bit(10) 0000101100 44::bit(3) 100 cast(-44 as bit(12)) 111111010100 '1110'::bit(4)::integer 14
Le transtypage « bit » signifie transtyper en bit(1) et, de ce fait, seul le bit de poids faible de l'entier est rendu.
Avant PostgreSQL™ 8.0, la conversion d'un entier en bit(n) copiait les n bits les plus à gauche de l'entier. Désormais, ce sont les n bits les plus à droite qui sont copiés. De plus, la conversion d'un entier en une chaîne de bits plus grande que l'entier lui-même étend l'entier, avec signature, vers la gauche.