Documentation PostgreSQL 8.0.25 | ||||
---|---|---|---|---|
Précédent | Arrière rapide | Chapitre 9. Fonctions et opérateurs | Avance rapide | Suivant |
Cette section décrit les fonctions et opérateurs pour examiner et manipuler des valeurs de type chaîne de caractères. Dans ce contexte, les chaînes incluent les valeurs des types character, character varying et text. Sauf cas contraire précisé, toutes les fonctions listées ci-dessous fonctionnent sur tous ces types mais faites attention des effets potentiels du remplissage automatique lors de l'utilisation du type character. Généralement, les fonctions décrites ici fonctionnent aussi sur les données d'autres types en convertissant au préalable la donnée en une représentation de type chaîne. Quelques fonctions existent aussi nativement pour le type chaînes bit à bit.
SQL définit quelques fonctions de type chaîne avec une syntaxe particulière où certains mots clés sont utilisés à la place de virgule pour séparer les arguments. Des détails sont disponibles dans Tableau 9-5. Ces fonctions sont aussi implémentées en utilisant la syntaxe rationnelle pour l'appel de fonctions. (Voir Tableau 9-6.)
Tableau 9-5. Fonctions et opérateurs SQL pour le type chaîne
Fonction | Type renvoyé | Description | Exemple | Résultat |
---|---|---|---|---|
string || string | text | Concaténation de chaîne | 'Post' || 'greSQL' | PostgreSQL |
bit_length
(string) | integer | Nombre de bits dans une chaîne | bit_length('jose') | 32 |
char_length
(string) ou
character_length
(string) | integer | Nombre de caractères dans une chaîne | char_length('jose') | 4 |
convert (string
using nom_conversion) | text | Modifie le codage en utilisant le nom de conversion cité. Les conversions peuvent être définies par CREATE CONVERSION. De même, il existe quelques noms de conversion pré-définis. Voir Tableau 9-7 pour les noms de conversion disponibles. | convert('PostgreSQL' using iso_8859_1_to_utf_8) | 'PostgreSQL' in Unicode (UTF-8) encoding |
lower
(string) | text | Convertit une chaîne en minuscule | lower('TOM') | tom |
octet_length (string) | integer | Nombre d'octets dans une chaîne | octet_length('jose') | 4 |
overlay (string
placing string from integer [for
integer]) | text | Remplace la sous-chaîne | overlay('Txxxxas' placing 'hom' from 2 for 4) | Thomas |
position (substring
in string) | integer | Emplacement des sous-chaînes spécifiées | position('om' in 'Thomas') | 3 |
substring (string
[from integer] [for
integer]) | text | Extrait une sous-chaîne | substring('Thomas' from 2 for 3) | hom |
substring (string
from modele) | text | Extrait une sous-chaîne correspondant à l'expression rationnelle POSIX | substring('Thomas' from '...$') | mas |
substring (string
from pattern for
escape) | text | Extrait une sous-chaîne correspondant à l'expression rationnelle SQL | substring('Thomas' from '%#"o_a#"_' for '#') | oma |
trim ([leading | trailing |
both]
[caractères] from
chaîne)
| text | Supprime la plus grande chaîne contenant seulement les caractères (un espace par défaut) à partir du début, de la fin ou des deux extrémités (respectivement start, end, both) de la chaîne. | trim(both 'x' from 'xTomxx') | Tom |
upper
(string) | text | Convertit une chaîne en majuscule | upper('tom') | TOM |
D'autres fonctions de manipulation de chaînes sont disponibles et listées dans Tableau 9-6. Certaines d'entre elles sont utilisées en interne pour implémenter les fonctions de chaîne répondant au standard SQL listées dans Tableau 9-5.
Tableau 9-6. Autres fonctions de chaîne
Fonction | Type renvoyé | Description | Exemple | Résultat |
---|---|---|---|---|
ascii (text) | integer | Code ASCII du premier caractère de l'argument | ascii('x') | 120 |
btrim (chaîne text
[, caractères text]) | text | Supprime la chaîne la plus longue consistant seulement de caractères compris dans caractères (un espace par défaut) entre le début et la fin de chaîne. | btrim('xyxtrimyyx', 'xy') | trim |
chr (integer) | text | Caractère correspondant au code ASCII donné | chr(65) | A |
convert (chaîne
text,
[codage_source
name,]
codage_destination name)
| text | Convertit une chaîne dans le codage codage_destination. Le codage initial est spécifié par codage_source. Si codage_source est omis, le codage de la base de données est pris en compte. | convert( 'texte_en_unicode', 'UNICODE', 'LATIN1') | texte_en_unicode représenté dans le codage ISO 8859-1 |
decode (chaîne
text,
type text)
| bytea | Décode les données binaires à partir de chaîne
codées auparavant avec encode . Le type de paramètre est le
même que encode .
| decode('MTIzAAE=', 'base64') | 123\000\001 |
encode (données
bytea,
type text)
| text | Code les données binaires en une représentation en ASCII uniquement. Les types supportés sont : base64, hex, escape. | encode( '123\\000\\001', 'base64') | MTIzAAE= |
initcap
(text) | text | Convertit la première lettre de chaque mot en majuscule et le reste en minuscule. Les mots sont des séquences de caractères alphanumériques séparés par des caractères non alphanumériques. | initcap('bonjour thomas') | Bonjour Thomas |
length
(chaîne text) | integer | Nombre de caractères dans chaîne | length('jose') | 4 |
lpad (chaîne
text,
longueur integer
[, remplissage
text])
| text | Remplit chaîne pour avoir une chaîne de longueur longueur en ajoutant les caractères remplissage (un espace par défaut). Si chaîne a un taille supérieure à longueur, alors elle est tronquée (sur la droite). | lpad('hi', 5, 'xy') | xyxhi |
ltrim (string chaîne
[, caractères text])
| text | Supprime la chaîne la plus longue contenant seulement les caractères de chaîne (un espace par défaut) à partir du début de la chaîne. | ltrim('zzzytrim', 'xyz') | trim |
md5 (chaîne
text) | text | Calcule la clé MD5 de chaîne, renvoyant le résultat en hexadécimal. | md5('abc') | 900150983cd24fb0 d6963f7d28e17f72 |
pg_client_encoding () | name | Nom du codage client actuel | pg_client_encoding() | SQL_ASCII |
quote_ident (chaîne
text) | text | Renvoie la chaîne entre guillemets à utiliser comme identifiant dans une chaîne d'instructions SQL. Les guillemets sont seulement ajoutés si nécessaire (c'est-à-dire si la chaîne contient des caractères non identifieurs). Les guillemets faisant partie de la chaîne sont doublés. | quote_ident('Foo bar') | "Foo bar" |
quote_literal (string
text) | text | Renvoie la chaîne correctement entre guillemets pour être utilisée comme une chaîne littérale dans une chaîne d'instructions SQL. Les guillemets compris dans la chaîne et les antislash sont correctement doublés. | quote_literal( 'O\'Reilly') | 'O''Reilly' |
repeat (chaîne text,
nombre integer) | text | Repète le texte chaîne nombre fois | repeat('Pg', 4) | PgPgPgPg |
replace (chaîne
text,
àpartirde text,
vers text) | text | Remplace dans chaîne toutes les occurrences de la sous-chaîne àpartirde avec la sous-chaîne vers. | replace( 'abcdefabcdef', 'cd', 'XX') | abXXefabXXef |
rpad (chaîne
text,
longueur integer
[, remplissage
text])
| text | Remplit chaîne sur une longueur de longueur caractères en ajoutant les caractères remplissage (un espace par défaut). Si la chaîne a une taille supérieure à longueur, elle est tronquée. | rpad('hi', 5, 'xy') | hixyx |
rtrim (chaîne text
[, caractères text])
| text | Supprime la chaîne la plus longue contenant uniquement les caractères provenant de caractères (un espace par défaut) depuis la fin de chaîne. | rtrim('trimxxxx', 'x') | trim |
split_part (chaîne
text,
délimiteur text,
champ integer) | text | Divise chaîne par rapport au délimiteur et renvoie le champ donné (en comptant à partir de 1) | split_part( 'abc~@~def~@~ghi', '~@~', 2) | def |
strpos (chaîne,
sous-chaîne) | int | Emplacement de la sous-chaîne spécifiée (identique à position(sous-chaîne in sous-chaîne), mais notez l'ordre inverse des arguments) | strpos('high', 'ig') | 2 |
substr (chaîne,
from [,
nombre]) | text | Extrait la sous-chaîne (identique à substring(chaîne from àpartirde for nombre)) | substr('alphabet', 3, 2) | ph |
to_ascii (text
[,
codage]) | text | Convertit le texte en ASCII à partir de n'importe quelle autre forme de codage [a] | to_ascii('Karel') | Karel |
to_hex (nombre
integer
ou bigint) | text | Convertit nombre dans sa représentation hexadécimale équivalente | to_hex(2147483647) | 7fffffff |
translate (chaîne
text,
àpartirde text,
vers text)
| text | Tout caractère dans chaîne qui correspond à un caractère dans l'ensemble àpartirde est remplacé par le caractère correspondant dans l'ensemble vers. | translate('12345', '14', 'ax') | a23x5 |
Remarques : a. La fonction to_ascii supporte la conversion de
LATIN1, LATIN2, LATIN9 et WIN1250
uniquement.
|
Tableau 9-7. Conversions intégrées
Nom de la conversion [a] | Codage source | Codage destination |
---|---|---|
ascii_to_mic | SQL_ASCII | MULE_INTERNAL |
ascii_to_utf_8 | SQL_ASCII | UNICODE |
big5_to_euc_tw | BIG5 | EUC_TW |
big5_to_mic | BIG5 | MULE_INTERNAL |
big5_to_utf_8 | BIG5 | UNICODE |
euc_cn_to_mic | EUC_CN | MULE_INTERNAL |
euc_cn_to_utf_8 | EUC_CN | UNICODE |
euc_jp_to_mic | EUC_JP | MULE_INTERNAL |
euc_jp_to_sjis | EUC_JP | SJIS |
euc_jp_to_utf_8 | EUC_JP | UNICODE |
euc_kr_to_mic | EUC_KR | MULE_INTERNAL |
euc_kr_to_utf_8 | EUC_KR | UNICODE |
euc_tw_to_big5 | EUC_TW | BIG5 |
euc_tw_to_mic | EUC_TW | MULE_INTERNAL |
euc_tw_to_utf_8 | EUC_TW | UNICODE |
gb18030_to_utf_8 | GB18030 | UNICODE |
gbk_to_utf_8 | GBK | UNICODE |
iso_8859_10_to_utf_8 | LATIN6 | UNICODE |
iso_8859_13_to_utf_8 | LATIN7 | UNICODE |
iso_8859_14_to_utf_8 | LATIN8 | UNICODE |
iso_8859_15_to_utf_8 | LATIN9 | UNICODE |
iso_8859_16_to_utf_8 | LATIN10 | UNICODE |
iso_8859_1_to_mic | LATIN1 | MULE_INTERNAL |
iso_8859_1_to_utf_8 | LATIN1 | UNICODE |
iso_8859_2_to_mic | LATIN2 | MULE_INTERNAL |
iso_8859_2_to_utf_8 | LATIN2 | UNICODE |
iso_8859_2_to_windows_1250 | LATIN2 | WIN1250 |
iso_8859_3_to_mic | LATIN3 | MULE_INTERNAL |
iso_8859_3_to_utf_8 | LATIN3 | UNICODE |
iso_8859_4_to_mic | LATIN4 | MULE_INTERNAL |
iso_8859_4_to_utf_8 | LATIN4 | UNICODE |
iso_8859_5_to_koi8_r | ISO_8859_5 | KOI8 |
iso_8859_5_to_mic | ISO_8859_5 | MULE_INTERNAL |
iso_8859_5_to_utf_8 | ISO_8859_5 | UNICODE |
iso_8859_5_to_windows_1251 | ISO_8859_5 | WIN |
iso_8859_5_to_windows_866 | ISO_8859_5 | ALT |
iso_8859_6_to_utf_8 | ISO_8859_6 | UNICODE |
iso_8859_7_to_utf_8 | ISO_8859_7 | UNICODE |
iso_8859_8_to_utf_8 | ISO_8859_8 | UNICODE |
iso_8859_9_to_utf_8 | LATIN5 | UNICODE |
johab_to_utf_8 | JOHAB | UNICODE |
koi8_r_to_iso_8859_5 | KOI8 | ISO_8859_5 |
koi8_r_to_mic | KOI8 | MULE_INTERNAL |
koi8_r_to_utf_8 | KOI8 | UNICODE |
koi8_r_to_windows_1251 | KOI8 | WIN |
koi8_r_to_windows_866 | KOI8 | ALT |
mic_to_ascii | MULE_INTERNAL | SQL_ASCII |
mic_to_big5 | MULE_INTERNAL | BIG5 |
mic_to_euc_cn | MULE_INTERNAL | EUC_CN |
mic_to_euc_jp | MULE_INTERNAL | EUC_JP |
mic_to_euc_kr | MULE_INTERNAL | EUC_KR |
mic_to_euc_tw | MULE_INTERNAL | EUC_TW |
mic_to_iso_8859_1 | MULE_INTERNAL | LATIN1 |
mic_to_iso_8859_2 | MULE_INTERNAL | LATIN2 |
mic_to_iso_8859_3 | MULE_INTERNAL | LATIN3 |
mic_to_iso_8859_4 | MULE_INTERNAL | LATIN4 |
mic_to_iso_8859_5 | MULE_INTERNAL | ISO_8859_5 |
mic_to_koi8_r | MULE_INTERNAL | KOI8 |
mic_to_sjis | MULE_INTERNAL | SJIS |
mic_to_windows_1250 | MULE_INTERNAL | WIN1250 |
mic_to_windows_1251 | MULE_INTERNAL | WIN |
mic_to_windows_866 | MULE_INTERNAL | ALT |
sjis_to_euc_jp | SJIS | EUC_JP |
sjis_to_mic | SJIS | MULE_INTERNAL |
sjis_to_utf_8 | SJIS | UNICODE |
tcvn_to_utf_8 | TCVN | UNICODE |
uhc_to_utf_8 | UHC | UNICODE |
utf_8_to_ascii | UNICODE | SQL_ASCII |
utf_8_to_big5 | UNICODE | BIG5 |
utf_8_to_euc_cn | UNICODE | EUC_CN |
utf_8_to_euc_jp | UNICODE | EUC_JP |
utf_8_to_euc_kr | UNICODE | EUC_KR |
utf_8_to_euc_tw | UNICODE | EUC_TW |
utf_8_to_gb18030 | UNICODE | GB18030 |
utf_8_to_gbk | UNICODE | GBK |
utf_8_to_iso_8859_1 | UNICODE | LATIN1 |
utf_8_to_iso_8859_10 | UNICODE | LATIN6 |
utf_8_to_iso_8859_13 | UNICODE | LATIN7 |
utf_8_to_iso_8859_14 | UNICODE | LATIN8 |
utf_8_to_iso_8859_15 | UNICODE | LATIN9 |
utf_8_to_iso_8859_16 | UNICODE | LATIN10 |
utf_8_to_iso_8859_2 | UNICODE | LATIN2 |
utf_8_to_iso_8859_3 | UNICODE | LATIN3 |
utf_8_to_iso_8859_4 | UNICODE | LATIN4 |
utf_8_to_iso_8859_5 | UNICODE | ISO_8859_5 |
utf_8_to_iso_8859_6 | UNICODE | ISO_8859_6 |
utf_8_to_iso_8859_7 | UNICODE | ISO_8859_7 |
utf_8_to_iso_8859_8 | UNICODE | ISO_8859_8 |
utf_8_to_iso_8859_9 | UNICODE | LATIN5 |
utf_8_to_johab | UNICODE | JOHAB |
utf_8_to_koi8_r | UNICODE | KOI8 |
utf_8_to_sjis | UNICODE | SJIS |
utf_8_to_tcvn | UNICODE | TCVN |
utf_8_to_uhc | UNICODE | UHC |
utf_8_to_windows_1250 | UNICODE | WIN1250 |
utf_8_to_windows_1251 | UNICODE | WIN |
utf_8_to_windows_1256 | UNICODE | WIN1256 |
utf_8_to_windows_866 | UNICODE | ALT |
utf_8_to_windows_874 | UNICODE | WIN874 |
windows_1250_to_iso_8859_2 | WIN1250 | LATIN2 |
windows_1250_to_mic | WIN1250 | MULE_INTERNAL |
windows_1250_to_utf_8 | WIN1250 | UNICODE |
windows_1251_to_iso_8859_5 | WIN | ISO_8859_5 |
windows_1251_to_koi8_r | WIN | KOI8 |
windows_1251_to_mic | WIN | MULE_INTERNAL |
windows_1251_to_utf_8 | WIN | UNICODE |
windows_1251_to_windows_866 | WIN | ALT |
windows_1256_to_utf_8 | WIN1256 | UNICODE |
windows_866_to_iso_8859_5 | ALT | ISO_8859_5 |
windows_866_to_koi8_r | ALT | KOI8 |
windows_866_to_mic | ALT | MULE_INTERNAL |
windows_866_to_utf_8 | ALT | UNICODE |
windows_866_to_windows_1251 | ALT | WIN |
windows_874_to_utf_8 | WIN874 | UNICODE |
Remarques : a. Les noms des conversions suivent un schéma de nommage standard : le nom officiel de la source de codage avec tous les caractères non alpha-numériques remplacés par des tirets bas suivis d'un _to_ suivi par le nom de destination du codage après avoir suivi le même traitement que le nom de la source. Du coup, les noms pourraient dévier de noms de codage personnalisés. |
Précédent | Sommaire | Suivant |
Fonctions et opérateurs mathématiques | Niveau supérieur | Fonctions et opérateurs de chaînes binaires |