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 utilise 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, « Fonctions et opérateurs SQL pour chaînes binaires ». PostgreSQL™ fournit aussi des versions de ces fonctions qui utilisant la syntaxe standard de l'appel de fonction (voir le Tableau 9.12, « Autres fonctions sur les chaînes binaires »).
Les résultats en exemple montrés ici supposent que le paramètre serveur bytea_output est configuré à escape (le format traditionel de PostgreSQL).
Tableau 9.11. Fonctions et opérateurs SQL pour chaînes binaires
Fonction | Type renvoyé | Description | Exemple | Résultat |
---|---|---|---|---|
chaîne || chaîne | bytea | Concaténation de chaîne | E'\\\\Post'::bytea || E'\\047gres\\000'::bytea | \\Post'gres\000 |
octet_length(chaîne) | int | Nombre d'octets d'une chaîne binaire | octet_length( E'jo\\000se'::bytea) | 5 |
overlay(chaîne placing chaîne from int [for int]) | bytea | Remplace une sous-chaîne | overlay(E'Th\\000omas'::bytea placing E'\\002\\003'::bytea from 2 for 3) | T\\002\\003mas |
position(sous-chaîne in chaîne) | int | Emplacement de la sous-chaîne indiquée | position( E'\\000om'::bytea in E'Th\\000omas'::bytea) | 3 |
substring(chaîne [from int] [for int]) | bytea | Extrait la sous-chaîne | substring(E'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(E'\\000\\001'::bytea from E'\\000Tom\\001'::bytea) | Tom |
Des fonctions supplémentaires de manipulations de chaînes binaires sont listées dans le Tableau 9.12, « Autres fonctions sur les chaînes binaires ». 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, « Fonctions et opérateurs SQL pour chaînes binaires ».
Tableau 9.12. Autres fonctions sur les chaînes binaires
Fonction | Type retourné | Description | Exemple | Ré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(E'\\000trim\\001'::bytea, E'\\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(E'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 octal (\nnn) et des antislashs doubles. | encode(E'123\\000456'::bytea, 'escape') | 123\000456 |
get_bit(chaîne, offset) | int | Extrait un bit d'une chaîne | get_bit(E'Th\\000omas'::bytea, 45) | 1 |
get_byte(chaîne, offset) | int | Extrait un octet d'une chaîne | get_byte(E'Th\\000omas'::bytea, 4) | 109 |
length(chaîne) | int | Longueur de la chaîne binaire | length(E'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(E'Th\\000omas'::bytea) | 8ab2d3c9689aaf18 b4958c334c82d8b1 |
set_bit(chaîne, offset, newvalue) | bytea | Positionne un bit dans une chaîne | set_bit(E'Th\\000omas'::bytea, 45, 0) | Th\000omAs |
set_byte(chaîne, offset, newvalue) | bytea | Positionne un octet dans une chaîne | set_byte(E'Th\\000omas'::bytea, 4, 64) | Th\000o@as |
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.
Voir aussi la fonction d'agrégat string_agg dans Section 9.20, « Fonctions d'agrégat ».