| Précédent | Niveau supérieur | Suivant |
| 9.4. Fonctions et opérateurs de chaînes | Sommaire | 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 valeurs de type bytea.
SQL définit quelques fonctions de chaînes qui utilisent des mots-clés qui sont employés à la place de virgules pour séparer les arguments. Les détails sont présentés dans Tableau 9.11. PostgreSQL fournit aussi des versions de ces fonctions qui utilisent la syntaxe standard de l'appel de fonction (voir le Tableau 9.12).
Les résultats en exemple montrés ici supposent que le paramètre
serveur bytea_output
est configuré à escape (le format traditionnel de
PostgreSQL).
Tableau 9.11. Fonctions et opérateurs SQL pour chaînes binaires
| Fonction | Type renvoyé | Description | Exemple | Résultat |
|---|---|---|---|---|
| bytea | Concaténation de chaîne | '\\Post'::bytea || '047円gres000円'::bytea | \\Post'gres000円 |
| int | Nombre d'octets d'une chaîne binaire | octet_length('jo000円se'::bytea) | 5 |
| bytea | Remplace une sous-chaîne | overlay('Th000円omas'::bytea placing '002円003円'::bytea from 2 for 3) | T\002円\003円mas |
| int | Emplacement de la sous-chaîne indiquée | position('000円om'::bytea in 'Th000円omas'::bytea) | 3 |
| bytea | Extrait la sous-chaîne | substring('Th000円omas'::bytea from 2 for 3) | h000円o |
| bytea |
Supprime la plus longue chaîne composée uniquement des octets apparaissant
dans octets à partir du début et de la fin de
chaîne
| trim('000円001円'::bytea from '000円Tom001円'::bytea) | Tom |
Des fonctions supplémentaires de manipulations de chaînes binaires sont listées dans le Tableau 9.12. Certaines sont utilisées en interne pour coder les fonctions de chaînes suivant le standard SQL et sont listées dans le Tableau 9.11.
Tableau 9.12. Autres fonctions sur les chaînes binaires
| Fonction | Type retourné | Description | Exemple | Résultat |
|---|---|---|---|---|
| bytea |
Supprime la plus longue chaîne constituée uniquement des octets apparaissant
dans octets à partir du début et de la fin de
chaîne.
| btrim('000円trim001円'::bytea, '000円001円'::bytea) | trim |
| bytea |
Décode les données binaires de leur représentation textuelle dans
chaîne auparavant codée. Les options pour
format sont les mêmes que pour
encode.
| decode('123000456円', 'escape') | 123000456円 |
| text |
Code les données binaires en une représentation textuelle. Les formats
supportés sont :
base64, hex, escape.
escape convertit les octets nuls et les octets dont le bit
de poids fort est à 1, en séquence octale (\nnn)
et des antislashs doubles.
| encode('123000456円'::bytea, 'escape') | 123000456円 |
| int | Extrait un bit d'une chaîne | get_bit('Th000円omas'::bytea, 45) | 1 |
| int | Extrait un octet d'une chaîne | get_byte('Th000円omas'::bytea, 4) | 109 |
| int | Longueur de la chaîne binaire | length('jo000円se'::bytea) | 5 |
| text |
Calcule le hachage MD5 de la chaîne et retourne
le résultat en hexadécimal
| md5('Th000円omas'::bytea) | 8ab2d3c9689aaf18 b4958c334c82d8b1 |
| bytea | Positionne un bit dans une chaîne | set_bit('Th000円omas'::bytea, 45, 0) | Th000円omAs |
| bytea | Positionne un octet dans une chaîne | set_byte('Th000円omas'::bytea, 4, 64) | Th000円o@as |
| bytea | Hachage SHA-224 | sha224('abc') | \x23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7 |
| bytea | Hachage SHA-256 | sha256('abc') | \xba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad |
| bytea | Hachage SHA-384 | sha384('abc') | \xcb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7 |
| bytea | Hachage SHA-512 | sha512('abc') | \xddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f |
get_byte et set_byte prennent en
compte le premier octet d'une chaîne binaire comme l'octet numéro zéro.
get_bit et set_bit comptent les
bits à partir de la droite pour chaque octet. Par exemple, le bit 0 est le
bit le moins significatif du premier octet et le bit 15 est le bit le plus
significatif du second octet.
Notez que pour des raisons historiques, la fonction
md5 renvoie une valeur codée en hexadécimal de type
text, alors que les fonctions SHA-2 renvoient une donnée de
type bytea. Utilisez les fonctions encode
et decode pour convertir entre les deux, par exemple
encode(sha256('abc'), 'hex') pour obtenir une
représentation textuelle encodée en hexadécimal.
Voir aussi la fonction d'agrégat string_agg dans
Section 9.20.