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.13 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.13. 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
.
En travaillant sur des chaînes de bits, ces fonctions numérotent le premier
bit (le plus à gauche) comme le bit 0.
set_bit
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.
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.