Opérateurs et fonctions chaîne

Cette section décrit les fonctions et les opérateurs pour l'examen et la manipulations des valeurs chaîne. Les chaînes dans ce contexte incluent les valeurs de tous les types CHARACTER, CHARACTER VARYING, et TEXT. Hormis note particulière, toutes les fonctions listées ci-dessous fonctionnent avec tous ces types, mais la prudence affecte l'ajout automatique de caractères dans l'utilisation du type CHARACTER. En général, les fonctions décrites ici fonctionnent aussi sur des données de types non-chaîne en convertissant ces données en une représentation de chaîne. Certaines fonctions existent aussi nativement pour les types chaîne-bit.

SQL définit certaines fonctions chaîne avec une syntaxe spécifique où certains mots-clé davantage que les virgules sont utilisés pour séparer les arguments. Voir les détails en Table 6. Ces fonctions sont aussi implémentées en utilisant la syntaxe régulière de l'invocation de fonction. (Voir Table 7.)

Table 6. Opérateurs et fonctions chaîne SQL

FonctionRetourDescriptionExempleRésultat
string || string text string concatenation 'Postgre' || 'SQL'PostgreSQL
bit_length(string)integernumber of bits in stringbit_length('jose')32
char_length(string) or character_length(string)integer number of characters in string char_length('jose')4
lower(string)textConvert string to lower case.lower('TOM')tom
octet_length(string)integernumber of bytes in stringoctet_length('jose')4
position(substring in string)integerlocation of specified substringposition('om' in 'Thomas')3
substring(string [from integer] [for integer])text extract substring substring('Thomas' from 2 for 3)hom
trim([leading | trailing | both] [characters] from string) text Removes the longest string containing only the characters (a space by default) from the beginning/end/both ends of the string. trim(both 'x' from 'xTomxx')Tom
upper(string)textConvert string to upper case.upper('tom')TOM

Des fonctions de manipulation de chaîne supplémentaires sont disponibles et listées plus bas. Certaines d'entre elles sont utilisées en interne pour implémenter les fonctions de chaîne SQL-standard listées ci-dessous.

Table 7. Autres fonctions chaîne

FonctionRetourDescriptionExempleRésultat
ascii(text)integerReturns the ASCII code of the first character of the argument.ascii('x')120
btrim(string text, trim text)text Remove (trim) the longest string consisting only of characters in trim from the start and end of string. btrim('xyxtrimyyx','xy')trim
chr(integer)textReturns the character with the given ASCII code.chr(65)A
convert(string text, [src_encoding name,] dest_encoding name) text Converts string using dest_encoding. The original encoding is specified by src_encoding. If src_encoding is omitted, database encoding is assumed. convert('text_in_unicode', 'UNICODE', 'LATIN1')text_in_unicode represented in ISO 8859-1
initcap(text)textConverts first letter of each word (whitespace separated) to upper case.initcap('hi thomas')Hi Thomas
length(string)integer length of string length('jose')4
lpad(string text, length integer [, fill text]) text Fills up the string to length length by prepending the characters fill (a space by default). If the string is already longer than length then it is truncated (on the right). lpad('hi', 5, 'xy')xyxhi
ltrim(string text, trim text)text Removes the longest string containing only characters from trim from the start of the string. ltrim('zzzytrim','xyz')trim
pg_client_encoding()name Returns current client encoding name. pg_client_encoding()SQL_ASCII
repeat(text, integer)textRepeat text a number of times.repeat('Pg', 4)PgPgPgPg
rpad(string text, length integer [, fill text]) text Fills up the string to length length by appending the characters fill (a space by default). If the string is already longer than length then it is truncated. rpad('hi', 5, 'xy')hixyx
rtrim(string text, trim text)text Removes the longest string containing only characters from trim from the end of the string. rtrim('trimxxxx','x')trim
strpos(string, substring)text Locates specified substring. (same as position(substring in string), but note the reversed argument order) strpos('high','ig')2
substr(string, from [, count])text Extracts specified substring. (same as substring(string from from for count)) substr('alphabet', 3, 2)ph
to_ascii(text [, encoding])textConverts text from multibyte encoding to ASCII.to_ascii('Karel')Karel
translate(string text, from text, to text) text Any character in string that matches a character in the from set is replaced by the corresponding character in the to set. translate('12345', '14', 'ax')a23x5
encode(data bytea, type text) text Encodes binary data to ASCII-only representation. Supported types are: 'base64', 'hex', 'escape'. encode('123\\000\\001', 'base64')MTIzAAE=
decode(string text, type text) bytea Decodes binary data from string previously encoded with encode(). Parameter type is same as in encode(). decode('MTIzAAE=', 'base64')123\000\001

La fonction to_ascii supporte la conversion depuis le LATIN1, LATIN2, WIN1250 (CP1250) seulement.