9.6. Fonctions et opérateurs sur les chaînes de bits

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. Quelque 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.

[Note]

Note

Avant PostgreSQL™ 8.0, la conversion d'un entier en bit(n) copiait les n bits les plus à gauche de l'entier alors que, maintenant, cela consiste à copier les n bits les plus à droite. De plus, convertir un entier en une chaîne de bits plus grande que l'entier lui-même étend l'entier, avec signature, vers la gauche.