Hologres prend en charge les fonctions de manipulation de chaînes suivantes. Pour la liste complète des fonctions compatibles avec PostgreSQL, consultez Fonctions PostgreSQL.
Index des fonctions
Concaténation, fractionnement et remplissage de chaînes
| Fonction | Description | ||
|---|---|---|---|
| STRING \|\| STRING[STRING \ | \ |
STRING](#16163c209490i) |
Concatène deux chaînes. |
| CONCAT | Concatène deux chaînes ou plus, en ignorant les arguments NULL. | ||
| CONCAT_WS | Concatène des chaînes à l'aide d'un séparateur, en ignorant les arguments de chaîne NULL. | ||
| LISTAGG | Agrège les valeurs d'une colonne sur plusieurs lignes en une seule chaîne. Compatible Oracle ; nécessite l'extension orafce. | ||
| STRING_AGG | Agrège les valeurs d'une colonne sur plusieurs lignes en une seule chaîne. | ||
| LEFT | Extrait des caractères depuis le début d'une chaîne. | ||
| RIGHT | Extrait des caractères depuis la fin d'une chaîne. | ||
| SPLIT_PART | Fractionne une chaîne selon un délimiteur et renvoie le n-ième segment. | ||
| SUBSTRING | Extrait une sous-chaîne par position ou par expression régulière. Alias : SUBSTR (forme compatible Oracle). | ||
| SUBSTR | Extrait une sous-chaîne à partir d'une position de départ. Compatible Oracle ; nécessite l'extension orafce. Alias : SUBSTRING. | ||
| REGEXP_MATCH | Fait correspondre une chaîne à une expression régulière et renvoie les correspondances sous forme de tableau. | ||
| REGEXP_SPLIT_TO_TABLE | Fractionne une chaîne selon une expression régulière et renvoie chaque segment sous forme de ligne. | ||
| REGEXP_SPLIT_TO_ARRAY | Fractionne une chaîne selon une expression régulière et renvoie les segments sous forme de tableau. | ||
| TRIM | Supprime les caractères spécifiés à l'une ou aux deux extrémités d'une chaîne. | ||
| BTRIM | Supprime les caractères spécifiés aux deux extrémités d'une chaîne. | ||
| LTRIM | Supprime les caractères spécifiés à gauche (au début) d'une chaîne. | ||
| RTRIM | Supprime les caractères spécifiés à droite (à la fin) d'une chaîne. | ||
| LPAD | Remplit une chaîne à gauche jusqu'à une longueur spécifiée. | ||
| RPAD | Remplit une chaîne à droite jusqu'à une longueur spécifiée. |
Autres fonctions de manipulation de chaînes
| Fonction | Description |
|---|---|
| ASCII | Renvoie le code ASCII du premier caractère. |
| CHAR_LENGTH | Renvoie la longueur en caractères d'une chaîne. Alias : LENGTH. |
| LENGTH | Renvoie le nombre de caractères dans une chaîne. Alias : CHAR_LENGTH. |
| CHR | Renvoie le caractère correspondant à une valeur de code donnée. |
| INITCAP | Met en majuscule la première lettre de chaque mot. |
| LOWER | Convertit une chaîne en minuscules. |
| UPPER | Convertit une chaîne en majuscules. |
| OCTET_LENGTH | Renvoie le nombre d'octets dans une chaîne. |
| MD5 | Renvoie le hachage MD5 d'une chaîne au format hexadécimal. |
| POSITION | Renvoie la position d'une sous-chaîne dans une chaîne. Alias : STRPOS. |
| STRPOS | Renvoie la position d'une sous-chaîne dans une chaîne. Alias : POSITION. |
| INSTR | Renvoie la position d'une sous-chaîne dans une plage donnée d'une chaîne. Compatible Oracle ; nécessite l'extension orafce. |
| REPLACE | Remplace toutes les occurrences d'une sous-chaîne par une autre chaîne. |
| REGEXP_REPLACE | Remplace les sous-chaînes correspondant à une expression régulière POSIX. |
| TRANSLATE | Remplace des caractères individuels dans une chaîne. |
| REPEAT | Répète une chaîne un nombre spécifié de fois. |
| STARTS_WITH | Renvoie true si une chaîne commence par un préfixe spécifié. |
| PARSE_IDENT | Analyse une chaîne d'identificateur SQL qualifié. |
| QUOTE_IDENT | Renvoie une chaîne entre guillemets en tant qu'identificateur SQL valide. |
| QUOTE_LITERAL | Renvoie une chaîne entre guillemets en tant que constante de chaîne SQL valide. |
| TO_HEX | Convertit un entier en sa représentation hexadécimale. |
| TO_NUMBER | Convertit une chaîne en type numérique. |
| PLVSTR.RVRS | Inverse une chaîne. Compatible Oracle ; nécessite l'extension orafce. |
| ROW | Renvoie le numéro de ligne de la ligne actuelle. Pris en charge dans Hologres V1.3 et versions ultérieures. |
Concaténation, fractionnement et remplissage de chaînes
STRING \|\| STRING
Concatène deux chaînes.
Syntaxe
<string_value1> TEXT || <string_value2> TEXT
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
string_value1 |
Oui | Première expression de chaîne. |
string_value2 |
Oui | Deuxième expression de chaîne. |
Type de renvoi : TEXT
Exemple
-- Returns: HologreSQL
SELECT 'Holo' || 'greSQL';
CONCAT
Concatène deux chaînes ou plus en une seule. Les arguments NULL sont ignorés.
Syntaxe
CONCAT(<str1> TEXT, <str2> TEXT, ..., <strN> TEXT)
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str1, ..., strN |
Oui | Chaînes à concaténer. Les valeurs NULL sont ignorées. |
Type de renvoi : TEXT
Exemple
SELECT CONCAT('abcde', 2, NULL, 22);
Résultat :
concat
--------
abcde222
CONCAT_WS
Concatène tous les arguments suivant le premier, en utilisant le premier argument comme séparateur.
Syntaxe
CONCAT_WS(<sep> TEXT, str "any" [, str "any" [, ...]])
Le type any indique que tous les types de données sont acceptés.
Paramètres
Obligatoire :
sep : Séparateur à insérer entre chaque chaîne. Si sep est NULL, la fonction renvoie NULL.
Facultatif :
str : Chaînes à concaténer. Les arguments de chaîne NULL sont ignorés.
Type de renvoi : TEXT
Exemple
SELECT CONCAT_WS(',', 'abcde', 2, NULL, 22);
Résultat :
concat_ws
----------
abcde,2,22
LISTAGG
Agrège les valeurs d'une même colonne sur plusieurs lignes en une seule chaîne. Il s'agit d'une fonction compatible Oracle qui nécessite l'extension orafce. Pour les instructions de configuration, consultez Fonctions compatibles Oracle.
Syntaxe
LISTAGG(<str1> TEXT [, <str2> TEXT])
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str1 |
Oui | Colonne ou expression de chaîne à agréger. |
str2 |
Non | Séparateur entre les valeurs agrégées. Par défaut : aucun séparateur. |
Type de renvoi : TEXT
Exemples
-- Returns: hologres
SELECT LISTAGG(t) FROM (VALUES('holo'), ('gres')) AS l(t);
-- Returns: holo.gres
SELECT LISTAGG(t, '.') FROM (VALUES('holo'), ('gres')) AS l(t);
STRING_AGG
Agrège les valeurs d'une même colonne sur plusieurs lignes en une seule chaîne.
Syntaxe
STRING_AGG(expression [order_by_clause]) [FILTER (WHERE filter_clause)]
La clause FILTER est prise en charge dans Hologres V1.3 et versions ultérieures. Pour mettre à niveau votre instance, consultez Mettre à niveau une instance . Pour obtenir de l'assistance, rejoignez le groupe DingTalk Hologres. Pour plus d'instructions, consultez Comment obtenir plus d'assistance en ligne ? .
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
expression |
Oui | Colonne ou expression à agréger. |
order_by_clause |
Non | Définit l'ordre de tri des valeurs avant la concaténation. Si omis, l'ordre n'est pas garanti. |
FILTER (WHERE filter_clause) |
Non | Filtre les lignes incluses dans l'agrégation. |
Type de renvoi : TEXT
Exemples
Exemple 1 : agrège tous les noms de villes en une seule chaîne.
CREATE TABLE city_test (
country text,
city text
);
INSERT INTO city_test
VALUES ('China', 'Shanghai'), ('China', 'Taiwan'), ('Japan', 'Tokyo'), ('France', 'Paris'), ('UK', 'London');
SELECT STRING_AGG(city, ',') FROM city_test;
Résultat :
string_agg
-------------------------------
Shanghai,Taiwan,Tokyo,Paris,London
Exemple 2 : agrège les noms où student_id > 2.
CREATE TABLE name_text (
student_id int,
name text
);
INSERT INTO name_text
VALUES (1, 'Zhang San'), (2, 'Li Si'), (3, 'Wang Wu'), (4, 'Zhou Liu');
SELECT STRING_AGG(name, ',') FILTER (WHERE student_id > 2) FROM name_text;
Résultat :
string_agg
-----------
Wang Wu,Zhou Liu
LEFT
Extrait un nombre spécifié de caractères depuis le début d'une chaîne.
Syntaxe
LEFT(<str> TEXT, <num> INT)
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str |
Oui | Chaîne cible. |
num |
Oui | Nombre de caractères à extraire. Si la valeur est négative, renvoie tous les caractères sauf les derniers -num caractères. |
Type de renvoi : TEXT
Exemple
SELECT LEFT('hologres', 4);
Résultat :
left
----
holo
RIGHT
Extrait un nombre spécifié de caractères depuis la fin d'une chaîne.
Syntaxe
RIGHT(<str> TEXT, <num> INT)
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str |
Oui | Chaîne cible. |
num |
Oui | Nombre de caractères à extraire. Si la valeur est négative, renvoie tous les caractères sauf les premiers -num caractères. |
Type de renvoi : TEXT
Exemple
SELECT RIGHT('hologres', 4);
Résultat :
right
-----
gres
SPLIT_PART
Fractionne une chaîne selon un délimiteur et renvoie le n-ième segment.
Syntaxe
SPLIT_PART(<str> TEXT, <delimiter> TEXT, <num> INT)
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str |
Oui | Chaîne cible à fractionner. |
delimiter |
Oui | Délimiteur utilisé pour le fractionnement. |
num |
Oui | Index (base 1) du segment à renvoyer. |
Type de renvoi : TEXT
Remarques d'utilisation
Si
numest supérieur au nombre de segments, la fonction renvoie NULL.
Exemple
CREATE TABLE split_part_test (
a text
);
INSERT INTO split_part_test VALUES ('a/b/c/d/e'), ('a1/b1/c1/d1/e1');
SELECT split_part(a, '/', 2) FROM split_part_test;
Résultat :
split_part
----------
b
b1
SUBSTRING
Extrait une sous-chaîne d'une chaîne cible. Prend en charge trois formes : basée sur la position, expression régulière POSIX et expression régulière SQL.
Syntaxe
Basée sur la position :
SUBSTRING(<str> TEXT [FROM <num_start> INT] [FOR <num_end> INT])
Expression régulière POSIX :
SUBSTRING(<str> TEXT FROM <pattern> TEXT)
Expression régulière SQL :
SUBSTRING(<str> TEXT FROM <pattern> TEXT FOR <escape> TEXT)
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str |
Oui | Chaîne cible. |
num_start |
Non | Position de départ (base 1). Par défaut : 1. |
num_end |
Non | Nombre de caractères à extraire. Par défaut : jusqu'à la fin de la chaîne. |
pattern |
Oui (formes regex) | Expression régulière à faire correspondre. |
escape |
Oui (regex SQL) | Caractère d'échappement pour les caractères spéciaux tels que ., * et +. |
Type de renvoi : TEXT
Exemples
Exemple 1 : extrait une sous-chaîne par position.
SELECT SUBSTRING('Thomas' FROM 2 FOR 3);
Résultat :
substring
---------
hom
Exemple 2 : extrait une sous-chaîne correspondant à une expression régulière POSIX.
SELECT SUBSTRING('Thomas' FROM '...$');
Résultat :
substring
---------
mas
Exemple 3 : extrait une sous-chaîne correspondant à une expression régulière SQL.
SELECT SUBSTRING('Thomas' FROM '%#"o_a#"_' FOR '#');
Résultat :
substring
---------
oma
SUBSTR
Extrait une sous-chaîne à partir d'une position de départ. Il s'agit d'une fonction compatible Oracle qui nécessite l'extension orafce. Pour les instructions de configuration, consultez Fonctions compatibles Oracle.
Syntaxe
Extraire depuis une position de départ jusqu'à la fin :
SUBSTR(<str> TEXT, <num_start> INTEGER)
Extraire une sous-chaîne de longueur fixe :
SUBSTR(<str> TEXT, <num_start> INTEGER, <len> INTEGER)
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str |
Oui | Chaîne cible. |
num_start |
Oui | Position de départ (base 1). |
len |
Non | Nombre de caractères à extraire. Par défaut : jusqu'à la fin de la chaîne. |
Type de renvoi : TEXT
Exemples
Exemple 1 : extrait depuis le quatrième caractère jusqu'à la fin.
-- Returns: ogres
SELECT SUBSTR('Hologres', 4);
Exemple 2 : extrait cinq caractères à partir du deuxième caractère.
-- Returns: ologr
SELECT SUBSTR('Hologres', 2, 5);
REGEXP_MATCH
Fait correspondre une chaîne à une expression régulière et renvoie les correspondances sous forme de tableau.
Syntaxe
REGEXP_MATCH(<str> TEXT, <pattern> TEXT)
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str |
Oui | Chaîne à faire correspondre. |
pattern |
Oui | Expression régulière. |
Type de renvoi : ARRAY
Exemple
SELECT regexp_match('foobarbequebaz', '(bar)(beque)');
Résultat :
regexp_match
------------
{bar,beque}
REGEXP_SPLIT_TO_TABLE
Fractionne une chaîne à l'aide d'une expression régulière et renvoie chaque segment sous forme de ligne distincte. Utilisez cette fonction pour développer les valeurs délimitées en lignes.
Syntaxe
REGEXP_SPLIT_TO_TABLE(<str> TEXT, <pattern> TEXT)
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str |
Oui | Chaîne à fractionner. |
pattern |
Oui | Expression régulière identifiant les positions de fractionnement. |
Type de renvoi : TEXT (une ligne par segment)
Exemple
CREATE TABLE interests_test (
name text,
intrests text
);
INSERT INTO interests_test
VALUES ('Zhang San', 'singing,dancing'), ('Li Si', 'soccer,running,drawing'), ('Wang Wu', 'flower arranging,calligraphy,playing piano,sleeping');
SELECT name, REGEXP_SPLIT_TO_TABLE(intrests, ',') FROM interests_test;
Résultat :
name | regexp_split_to_table
----------+----------------------
Zhang San | singing
Zhang San | dancing
Li Si | soccer
Li Si | running
Li Si | drawing
Wang Wu | flower arranging
Wang Wu | calligraphy
Wang Wu | playing piano
Wang Wu | sleeping
REGEXP_SPLIT_TO_ARRAY
Fractionne une chaîne à l'aide d'une expression régulière et renvoie les segments sous forme de tableau.
Syntaxe
REGEXP_SPLIT_TO_ARRAY(<str> TEXT, <pattern> TEXT)
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str |
Oui | Chaîne à fractionner. |
pattern |
Oui | Expression régulière identifiant les positions de fractionnement. |
Type de renvoi : ARRAY
Exemple
CREATE TABLE interests_test (
name text,
intrests text
);
INSERT INTO interests_test
VALUES ('Zhang San', 'singing,dancing'), ('Li Si', 'soccer,running,drawing'), ('Wang Wu', 'flower arranging,calligraphy,playing piano,sleeping');
SELECT name, REGEXP_SPLIT_TO_ARRAY(intrests, ',') FROM interests_test;
Résultat :
name | regexp_split_to_array
----------+----------------------------------------------------------
Zhang San | {singing,dancing}
Li Si | {soccer,running,drawing}
Wang Wu | {"flower arranging",calligraphy,"playing piano",sleeping}
TRIM
Supprime les caractères spécifiés à l'une ou aux deux extrémités d'une chaîne.
Syntaxe
TRIM([LEADING | TRAILING | BOTH] [<characters> TEXT] FROM <string> TEXT)
Paramètres
| Paramètre | Obligatoire | Description | ||
|---|---|---|---|---|
`LEADING |
TRAILING | BOTH` |
Non |
Extrémité(s) à rogner. Par défaut : |
characters |
Non | Ensemble de caractères à supprimer. Chaque caractère est mis en correspondance individuellement, et non en tant que chaîne entière. Par défaut : espace. | ||
string |
Oui | Chaîne cible. |
Type de renvoi : TEXT
Exemple
-- Returns: Tom
SELECT TRIM(BOTH 'xyz' FROM 'yxTomxx');
BTRIM
Supprime les caractères spécifiés aux deux extrémités d'une chaîne.
Syntaxe
BTRIM(<str> TEXT [, <characters> TEXT])
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str |
Oui | Chaîne cible. |
characters |
Non | Ensemble de caractères à supprimer aux deux extrémités. Chaque caractère est mis en correspondance individuellement, et non en tant que chaîne entière. Par défaut : espace. |
Type de renvoi : TEXT
Exemple
-- Returns: trim
SELECT BTRIM('xyxtrimyyx', 'xyz');
LTRIM
Supprime les caractères spécifiés à gauche (au début) d'une chaîne.
Syntaxe
LTRIM(<str> TEXT [, <characters> TEXT])
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str |
Oui | Chaîne cible. |
characters |
Non | Ensemble de caractères à supprimer à gauche. Chaque caractère est mis en correspondance individuellement, et non en tant que chaîne entière. Par défaut : espace. |
Type de renvoi : TEXT
Exemple
-- Returns: test
SELECT LTRIM('zzzytest', 'xyz');
RTRIM
Supprime les caractères spécifiés à droite (à la fin) d'une chaîne.
Syntaxe
RTRIM(<str> TEXT [, <characters> TEXT])
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str |
Oui | Chaîne cible. |
characters |
Non | Ensemble de caractères à supprimer à droite. Chaque caractère est mis en correspondance individuellement, et non en tant que chaîne entière. Par défaut : espace. |
Type de renvoi : TEXT
Exemple
-- Returns: test
SELECT RTRIM('testxxzx', 'xyz');
LPAD
Remplit une chaîne à gauche avec un caractère de remplissage jusqu'à une longueur totale spécifiée.
Syntaxe
LPAD(<str> TEXT, <length> INT [, <fill> TEXT])
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str |
Oui | Chaîne cible. |
length |
Oui | Longueur totale du résultat. Si str est plus long que length, la chaîne est tronquée à droite pour atteindre la longueur spécifiée. |
fill |
Non | Caractère de remplissage. Par défaut : espace. |
Type de renvoi : TEXT
Exemple
-- Returns: xyxhi
SELECT LPAD('hi', 5, 'xy');
RPAD
Remplit une chaîne à droite avec un caractère de remplissage jusqu'à une longueur totale spécifiée.
Syntaxe
RPAD(<str> TEXT, <length> INT [, <fill> TEXT])
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str |
Oui | Chaîne cible. |
length |
Oui | Longueur totale du résultat. Si str est plus long que length, la chaîne est tronquée à droite pour atteindre la longueur spécifiée. |
fill |
Non | Caractère de remplissage. Par défaut : espace. |
Type de renvoi : TEXT
Exemple
-- Returns: hixyx
SELECT RPAD('hi', 5, 'xy');
Autres fonctions de manipulation de chaînes
ASCII
Renvoie le code ASCII du premier caractère d'une chaîne.
Syntaxe
ASCII(<str> TEXT)
Type de renvoi : INTEGER
Exemple
-- Returns: 120
SELECT ASCII('x');
CHAR_LENGTH
Renvoie le nombre de caractères dans une chaîne. Équivalent à LENGTH.
Syntaxe
CHAR_LENGTH(<str> TEXT)
Type de renvoi : INTEGER
Exemple
-- Returns: 4
SELECT CHAR_LENGTH('jose');
LENGTH
Renvoie le nombre de caractères dans une chaîne. Dans l'encodage UTF-8, chaque caractère chinois, chiffre ou lettre compte pour un caractère. Équivalent à CHAR_LENGTH.
Syntaxe
LENGTH(<str> TEXT)
Type de renvoi : INTEGER
Exemple
-- Returns: 4
SELECT LENGTH('jose');
CHR
Renvoie le caractère correspondant à une valeur de code ASCII ou Unicode donnée.
Syntaxe
CHR(<num> INT)
Type de renvoi : TEXT
Exemple
-- Returns: A
SELECT CHR(65);
INITCAP
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ées par des caractères non alphanumériques.
Syntaxe
INITCAP(<str> TEXT)
Type de renvoi : TEXT
Exemple
-- Returns: Hi Thomas
SELECT INITCAP('hi THOMAS');
LOWER
Convertit une chaîne en minuscules.
Syntaxe
LOWER(<str> TEXT)
Type de renvoi : TEXT
Exemple
-- Returns: tom
SELECT LOWER('TOM');
UPPER
Convertit une chaîne en majuscules.
Syntaxe
UPPER(<str> TEXT)
Type de renvoi : TEXT
Exemple
-- Returns: TOM
SELECT UPPER('tom');
OCTET_LENGTH
Renvoie le nombre d'octets dans une chaîne.
Syntaxe
OCTET_LENGTH(<str> TEXT)
Type de renvoi : INTEGER
Exemple
-- Returns: 4
SELECT OCTET_LENGTH('jose');
MD5
Calcule le hachage MD5 d'une chaîne et renvoie le résultat sous forme de chaîne hexadécimale.
Syntaxe
MD5(<str> TEXT)
Type de renvoi : TEXT
Exemple
-- Returns: 900150983cd24fb0d6963f7d28e17f72
SELECT MD5('abc');
POSITION
Renvoie la position de départ d'une sous-chaîne dans une chaîne. Renvoie 0 si la sous-chaîne est introuvable. Équivalent à STRPOS.
Syntaxe
POSITION(<substr> TEXT IN <str> TEXT)
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
substr |
Oui | Sous-chaîne à rechercher. |
str |
Oui | Chaîne cible. |
Type de renvoi : INTEGER
Exemple
-- Returns: 3
SELECT POSITION('om' IN 'Thomas');
STRPOS
Renvoie la position de départ d'une sous-chaîne dans une chaîne. Renvoie 0 si la sous-chaîne est introuvable. Équivalent à POSITION.
Syntaxe
STRPOS(<str> TEXT, <substr> TEXT)
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str |
Oui | Chaîne cible. |
substr |
Oui | Sous-chaîne à rechercher. |
Type de renvoi : INTEGER
Exemple
-- Returns: 2
SELECT STRPOS('high', 'ig');
INSTR
Renvoie la position d'une sous-chaîne dans une chaîne cible, avec contrôle facultatif de la position de départ et de l'occurrence. Renvoie 0 si la sous-chaîne est introuvable. Il s'agit d'une fonction compatible Oracle qui nécessite l'extension orafce. Pour les instructions de configuration, consultez Fonctions compatibles Oracle.
Syntaxe
INSTR(<str> TEXT, <patt> TEXT [, <start> INTEGER [, <nth> INTEGER]])
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str |
Oui | Chaîne cible. |
patt |
Oui | Sous-chaîne à rechercher. |
start |
Non | Position à partir de laquelle commencer la recherche. Par défaut : 1 (début de la chaîne). |
nth |
Non | Occurrence à trouver. Par défaut : 1 (première occurrence). |
Type de renvoi : INTEGER
Exemples
-- Returns: 4 (second occurrence of 'o', searching from position 1)
SELECT INSTR('Hologres', 'o', 1, 2);
-- Returns: 2 (first occurrence of 'o', searching from position 1)
SELECT INSTR('Hologres', 'o', 1, 1);
-- Returns: 4 (first occurrence of 'o' at or after position 4)
SELECT INSTR('Hologres', 'o', 4);
-- Returns: 2 (first occurrence of 'o')
SELECT INSTR('Hologres', 'o');
REPLACE
Remplace toutes les occurrences d'une sous-chaîne dans une chaîne.
Syntaxe
REPLACE(<str> TEXT, <old_str> TEXT, <new_str> TEXT)
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str |
Oui | Chaîne cible. |
old_str |
Oui | Sous-chaîne à remplacer. |
new_str |
Oui | Chaîne de remplacement. |
Type de renvoi : TEXT
Exemple
CREATE TABLE animal_test (
animal text,
color text
);
INSERT INTO animal_test
VALUES ('dog', 'white'), ('cat', 'white'), ('tiger', 'yellow');
SELECT animal, REPLACE(color, 'white', 'multi-colored') FROM animal_test;
Résultat :
animal | replace
-------+--------------
dog | multi-colored
cat | multi-colored
tiger | yellow
REGEXP_REPLACE
Remplace les sous-chaînes correspondant à une expression régulière POSIX par une chaîne de remplacement.
Syntaxe
REGEXP_REPLACE(<str> TEXT, <regex> TEXT, <replacement> TEXT [, <flags> TEXT])
Paramètres
Obligatoire :
| Paramètre | Description |
|---|---|
str |
Chaîne cible. |
regex |
Expression régulière POSIX à faire correspondre. |
replacement |
Chaîne de remplacement. |
Facultatif :
flags : Un ou plusieurs caractères contrôlant le comportement de la correspondance. Par défaut : remplace uniquement la première correspondance, sensible à la casse.
| Indicateur | Description |
|---|---|
g |
Remplacer toutes les occurrences (par défaut, seule la première est remplacée). |
i |
Correspondance insensible à la casse. |
m |
Mode multiligne. |
s |
Mode monoligne : . correspond aux nouvelles lignes. |
Type de renvoi : TEXT
Exemple
CREATE TABLE a_test (
a text
);
INSERT INTO a_test VALUES ('Abcd1234abCd');
SELECT REGEXP_REPLACE(a, '1234.', '77', 'ig') FROM a_test;
Résultat :
regexp_replace
--------------
Abcd77bCd
TRANSLATE
Remplace des caractères individuels dans une chaîne selon un mappage de caractères.
Syntaxe
TRANSLATE(<str> TEXT, <substr> TEXT, <newstr> TEXT)
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str |
Oui | Chaîne cible. |
substr |
Oui | Ensemble de caractères à remplacer. |
newstr |
Oui | Caractères de remplacement, mappés positionnellement à substr. Si newstr est plus court que substr, les caractères supplémentaires dans substr sont supprimés du résultat. |
Type de renvoi : TEXT
Exemple
-- Returns: a2x5
SELECT TRANSLATE('12345', '143', 'ax');
REPEAT
Répète une chaîne un nombre spécifié de fois.
Syntaxe
REPEAT(<str> TEXT, <number> INT)
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str |
Oui | Chaîne à répéter. |
number |
Oui | Nombre de répétitions. |
Type de renvoi : TEXT
Exemple
-- Returns: PgPgPgPg
SELECT REPEAT('Pg', 4);
STARTS_WITH
Renvoie true si une chaîne commence par un préfixe spécifié.
Syntaxe
STARTS_WITH(<str> TEXT, <prefix> TEXT)
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str |
Oui | Chaîne cible. |
prefix |
Oui | Préfixe à vérifier. |
Type de renvoi : BOOLEAN (t pour true, f pour false)
Exemple
-- Returns: t
SELECT STARTS_WITH('alphabet', 'alph');
PARSE_IDENT
Analyse une chaîne d'identificateur SQL qualifié et renvoie ses composants sous forme de tableau. Les composants non mis entre guillemets sont convertis en minuscules ; les composants entre guillemets conservent leur casse.
Syntaxe
PARSE_IDENT(<quali_iden> TEXT)
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
quali_iden |
Oui | Identificateur SQL qualifié, tel qu'un nom de table entièrement qualifié. |
Type de renvoi : TEXT (format tableau)
Exemple
-- Returns: {"SomeSchema","sometable"}
SELECT PARSE_IDENT('"SomeSchema".someTable');
QUOTE_IDENT
Renvoie la chaîne entre guillemets en tant qu'identificateur SQL valide, en ajoutant des guillemets doubles si nécessaire (par exemple, lorsque la chaîne contient des espaces ou des lettres majuscules qui seraient autrement converties en minuscules).
Syntaxe
QUOTE_IDENT(<str> TEXT)
Type de renvoi : TEXT
Exemple
-- Returns: "Foo bar"
SELECT QUOTE_IDENT('Foo bar');
QUOTE_LITERAL
Renvoie la chaîne entre guillemets en tant que constante de chaîne SQL valide, en échappant les guillemets simples si nécessaire.
Syntaxe
QUOTE_LITERAL(<str> TEXT)
Type de renvoi : TEXT
Exemple
-- Returns: 'O''Reilly'
SELECT QUOTE_LITERAL(E'O\'Reilly');
TO_HEX
Convertit un entier en sa représentation sous forme de chaîne hexadécimale.
Syntaxe
TO_HEX(<number> INT | BIGINT)
Type de renvoi : TEXT
Exemple
-- Returns: 7fffffff
SELECT TO_HEX(2147483647);
TO_NUMBER
Convertit une chaîne formatée en valeur numérique à l'aide d'un modèle de format.
Syntaxe
TO_NUMBER(<str1> TEXT, <str2> TEXT)
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str1 |
Oui | Chaîne à convertir. |
str2 |
Oui | Modèle de format définissant la manière d'analyser la chaîne. |
Type de renvoi : NUMERIC
Exemple
-- Returns: -12454.8
SELECT TO_NUMBER('12,454.8-', '99G999D9S');
PLVSTR.RVRS
Inverse une partie ou la totalité d'une chaîne. Il s'agit d'une fonction compatible Oracle qui nécessite l'extension orafce. Pour les instructions de configuration, consultez Fonctions compatibles Oracle.
Syntaxe
Inverser la chaîne entière :
PLVSTR.RVRS(<str> TEXT)
Inverser depuis une position de départ jusqu'à la fin :
PLVSTR.RVRS(<str> TEXT, <start> INTEGER)
Inverser une plage spécifiée :
PLVSTR.RVRS(<str> TEXT, <start> INTEGER, <end> INTEGER)
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
str |
Oui | Chaîne cible. |
start |
Non | Position de départ de la plage à inverser (base 1). Par défaut : 1. |
end |
Non | Position de fin de la plage à inverser. Par défaut : fin de la chaîne. |
Type de renvoi : TEXT
Exemples
-- Returns: sergoloH (entire string reversed)
SELECT PLVSTR.RVRS('Hologres');
-- Returns: sergo (reversed from position 4 to end)
SELECT PLVSTR.RVRS('Hologres', 4);
-- Returns: rg (positions 5-6 reversed)
SELECT PLVSTR.RVRS('Hologres', 5, 6);
ROW
Renvoie le numéro de ligne de la ligne actuelle. Pris en charge dans Hologres V1.3 et versions ultérieures.
Pour mettre à niveau votre instance vers la version V1.3 ou ultérieure, consultez Mettre à niveau une instance . Pour obtenir de l'assistance, rejoignez le groupe DingTalk Hologres. Pour plus d'instructions, consultez Comment obtenir plus d'assistance en ligne ? .
Syntaxe
ROW(<val1>, <val2>, ...)
Type de renvoi : ARRAY ou TEXT
Exemple
L'exemple suivant renvoie les lignes où la colonne a et la colonne b ont des valeurs égales.
CREATE TABLE row_test (
a text,
b text
);
INSERT INTO row_test VALUES ('0', '0'), ('1', '0');
SELECT a, b FROM row_test WHERE ROW(a, b) = ROW(b, a);
Résultat :
a | b
--+--
0 | 0