IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

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, overlay.

Les fonctions suivantes fonctionnent sur les chaînes de bits ainsi que sur les chaînes binaires : get_bit, set_bit. En travaillant sur des chaînes de bits, ces fonctions numérotent le premier bit (le plus à gauche) comme le bit 0.

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.

[Note]

Note

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.