PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 12.22 » Langage SQL » Fonctions et opérateurs » Fonctions et opérateurs sur les chaînes de bits

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

Convertir un entier en bit(n) copie les n bits les plus à droite. Convertir un entier en une chaîne de bits plus large que l'entier lui-même ajoutera l'extension de signe à gauche.