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

Cette section décrit les fonctions et opérateurs pour examiner et manipuler les chaînes de bits, qui sont des valeurs du type bit et bit varying. En dehors des opérateurs de comparaison habituels, les opérateurs montrés dans Tableau 9-10 peuvent être utilisés. Les opérandes de chaînes de bits &, | 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 montre les exemples.

Tableau 9-10. Opérateurs sur les chaînes de bits

OpérateurDescriptionExempleRésultat
|| concaténationB'10001' || B'011'10001011
& AND bit à bitB'10001' & B'01101'00001
| OR bit à bitB'10001' | B'01101'11101
# XOR bit à bitB'10001' # B'01101'11100
~ NOT bit à bit~ B'10001'01110
<< décalage gauche bit à bitB'10001' << 301000
>> décalage droit bit à bitB'10001' >> 200100

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 en ou à partir du type bit. Quelque exemples :

44::bit(10)                    0000101100
44::bit(3)                     100
cast(-44 as bit(12))           111111010100
'1110'::bit(4)::integer        14

Notez que la conversion de << bit >> signifie la conversion de bit(1) et, du coup, il délivrera seulement le bit de poids faible de l'entier.

Note : Avant PostgreSQL 8.0, convertir une entier en bit(n) aurait copié les n bits les plus à gauche de l'entier alors que, maintenant, il copie les n bits les plus à droite. De plus, convertir un entier en une chaîne de bits d'une largeur plus grande que l'entier lui-même changera le signe côté gauche.