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

9.5. Fonctions et opérateurs de chaînes binaires

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.12. PostgreSQL fournit aussi des versions de ces fonctions qui utilisent la syntaxe standard de l'appel de fonction (voir le Tableau 9.13).

Note

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.12. Fonctions et opérateurs SQL pour chaînes binaires

FonctionType renvoyéDescriptionExempleRésultat
chaîne || chaînebytea Concaténation de chaîne '\\Post'::bytea || '\047gres\000'::bytea\\Post'gres\000
octet_length(chaîne) intNombre d'octets d'une chaîne binaireoctet_length('jo\000se'::bytea)5
overlay(chaîne placing chaîne from int [for int]) bytea Remplace une sous-chaîne overlay('Th\000omas'::bytea placing '\002\003'::bytea from 2 for 3)T\\002\\003mas
position(sous-chaîne in chaîne) intEmplacement de la sous-chaîne indiquéeposition('\000om'::bytea in 'Th\000omas'::bytea)3
substring(chaîne [from int] [for int]) bytea Extrait la sous-chaîne substring('Th\000omas'::bytea from 2 for 3)h\000o
trim([both] octets from chaîne) 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 '\000Tom\001'::bytea)Tom

Des fonctions supplémentaires de manipulations de chaînes binaires sont listées dans le Tableau 9.13. 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.12.

Tableau 9.13. Autres fonctions sur les chaînes binaires

FonctionType retournéDescriptionExempleRésultat
btrim(chaîne bytea, octets bytea) 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('\000trim\001'::bytea, '\000\001'::bytea)trim
decode(chaîne text, format text) 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('123\000456', 'escape')123\000456
encode(chaîne bytea, type text) 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('123\000456'::bytea, 'escape')123\000456
get_bit(chaîne, offset) int Extrait un bit d'une chaîne get_bit('Th\000omas'::bytea, 45)1
get_byte(chaîne, offset) int Extrait un octet d'une chaîne get_byte('Th\000omas'::bytea, 4)109
length(chaîne) int Longueur de la chaîne binaire length('jo\000se'::bytea)5
md5(chaîne) text Calcule le hachage MD5 de la chaîne et retourne le résultat en hexadécimal md5('Th\000omas'::bytea)8ab2d3c9689aaf18 b4958c334c82d8b1
set_bit(chaîne, offset, newvalue) bytea Positionne un bit dans une chaîne set_bit('Th\000omas'::bytea, 45, 0)Th\000omAs
set_byte(chaîne, offset, newvalue) bytea Positionne un octet dans une chaîne set_byte('Th\000omas'::bytea, 4, 64)Th\000o@as
sha224(bytea) bytea Hachage SHA-224 sha224('abc')\x23097d223405d8228642a477bda2​55b32aadbce4bda0b3f7e36c9da7
sha256(bytea) bytea Hachage SHA-256 sha256('abc')\xba7816bf8f01cfea414140de5dae2223​b00361a396177a9cb410ff61f20015ad
sha384(bytea) bytea Hachage SHA-384 sha384('abc')\xcb00753f45a35e8bb5a03d699ac65007​272c32ab0eded1631a8b605a43ff5bed​8086072ba1e7cc2358baeca134c825a7
sha512(bytea) bytea Hachage SHA-512 sha512('abc')\xddaf35a193617abacc417349ae204131​12e6fa4e89a97ea20a9eeee64b55d39a​2192992a274fc1a836ba3c23a3feebbd​454d4423643ce80e2a9ac94fa54ca49f

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 deuxième 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.