Les fonctions générales sur les chaînes de caractères et les fonctions de recherche dans les chaînes sont décrites séparément.
format
Introduit dans : v20.1.0
Met en forme la chaîne pattern avec les valeurs (chaînes, entiers, etc.) listées dans les arguments, de manière similaire au formatage en Python.
La chaîne de motif peut contenir des champs de remplacement entourés d'accolades {}.
Tout ce qui n'est pas entre accolades est considéré comme du texte littéral et copié tel quel dans la sortie.
Le caractère d'accolade littéral peut être échappé avec deux accolades : {{ et }}.
Les noms de champ peuvent être des nombres (à partir de zéro) ou être vides (dans ce cas, des nombres croissants leur sont attribués implicitement).
Syntaxe
format(pattern, s0[, s1, ...])Arguments
pattern— La chaîne de format contenant des marqueurs de substitution.Strings0[, s1, ...]— Une ou plusieurs valeurs à insérer dans la chaîne de format.Any
Valeur renvoyée
Renvoie une chaîne formatée. String
Exemples
Marqueurs de substitution numérotés
SELECT format('{1} {0} {1}', 'World', 'Hello')┌─format('{1} {0} {1}', 'World', 'Hello')─┐
│ Hello World Hello │
└─────────────────────────────────────────┘Numérotation implicite
SELECT format('{} {}', 'Hello', 'World')┌─format('{} {}', 'Hello', 'World')─┐
│ Hello World │
└───────────────────────────────────┘overlay
Introduit dans : v24.9.0
Remplace une partie de la chaîne input par une autre chaîne replace, à partir de l’indice offset (indexé à partir de 1).
Syntaxe
overlay(s, replace, offset[, length])Arguments
s— La chaîne d'entrée.Stringreplace— La chaîne de remplacementconst Stringoffset— Un entier de typeInt(indexé à partir de 1). Sioffsetest négatif, il est compté à partir de la fin de la chaînes.Intlength— Facultatif. Un entier de typeInt.lengthindique la longueur de la portion de la chaîne d'entréesà remplacer. Silengthn'est pas spécifié, le nombre d'octets supprimés desest égal à la longueur dereplace; sinon,lengthoctets sont supprimés.Int
Valeur renvoyée
Renvoie une chaîne avec le remplacement appliqué. String
Exemples
Remplacement de base
SELECT overlay('My father is from Mexico.', 'mother', 4) AS res;┌─res───────────────────────┐
│ My mother is from Mexico. │
└───────────────────────────┘Remplacement avec une longueur
SELECT overlay('My father is from Mexico.', 'dad', 4, 6) AS res;┌─res────────────────────┐
│ My dad is from Mexico. │
└────────────────────────┘overlayUTF8
Introduit dans : v24.9.0
Remplace une partie de la chaîne s par une autre chaîne replace, à partir de l'index offset indexé à partir de 1.
Suppose que la chaîne contient du texte valide encodé en UTF-8.
Si cette hypothèse n'est pas respectée, aucune exception n'est levée et le résultat est indéfini.
Syntaxe
overlayUTF8(s, replace, offset[, length])Arguments
s— La chaîne d’entrée.Stringreplace— La chaîne de remplacement.const Stringoffset— Un entier de typeInt(indexé à partir de 1). Sioffsetest négatif, il est compté à partir de la fin de la chaîne d’entrées.(U)Int*length— Facultatif. Indique la longueur de l’extrait de la chaîne d’entréesà remplacer. Silengthn’est pas spécifié, le nombre de caractères supprimés desest égal à la longueur dereplace; sinon,lengthcaractères sont supprimés.(U)Int*
Valeur renvoyée
Renvoie une chaîne avec le remplacement effectué. String
Exemples
Remplacement UTF-8
SELECT overlayUTF8('Mein Vater ist aus Österreich.', 'der Türkei', 20) AS res;┌─res────────────────────────────┐
│ Mein Vater ist aus der Türkei. │
└────────────────────────────────┘printf
Introduit dans : v24.8.0
La fonction printf met en forme la chaîne donnée à l’aide des valeurs (chaînes, entiers, nombres à virgule flottante, etc.) listées dans les arguments, à l’instar de la fonction printf en C++.
La chaîne de format peut contenir des spécificateurs de format commençant par le caractère %.
Tout ce qui n’est pas inclus dans % et le spécificateur de format qui le suit est considéré comme du texte littéral et recopié tel quel dans la sortie.
Le caractère % littéral peut être échappé avec %%.
La chaîne de format peut être soit une constante, soit une expression de colonne, ce qui permet d’utiliser des formats différents pour chaque ligne.
Syntaxe
printf(format[, sub1, sub2, ...])Arguments
format— La chaîne de format contenant des spécificateurs%.Stringsub1, sub2, ...— Facultatif. Zéro, une ou plusieurs valeurs à substituer dans la chaîne de format.Any
Valeur renvoyée
Renvoie une chaîne formatée. String
Exemples
Formatage de style C++
SELECT printf('%%%s %s %d', 'Hello', 'World', 2024);┌─printf('%%%s %s %d', 'Hello', 'World', 2024)─┐
│ %Hello World 2024 │
└──────────────────────────────────────────────┘regexpQuoteMeta
Introduite dans : v20.1.0
Ajoute une barre oblique inverse devant les caractères suivants, qui ont une signification particulière dans les expressions régulières : \0, \\, |, (, ), ^, $, ., [, ], ?, *, +, {, :, -.
Cette implémentation diffère légèrement de re2::RE2::QuoteMeta.
Elle échappe l’octet nul sous la forme \0 au lieu de \x00 et n’échappe que les caractères nécessaires.
Syntaxe
regexpQuoteMeta(s)Arguments
s— La chaîne d'entrée contenant les caractères à échapper dans une expression régulière.String
Valeur renvoyée
Renvoie une chaîne dans laquelle les caractères spéciaux des expressions régulières sont échappés. String
Exemples
Échapper les caractères spéciaux d'une expression régulière
SELECT regexpQuoteMeta('Hello. [World]? (Yes)*') AS res┌─res───────────────────────────┐
│ Hello\. \[World\]\? \(Yes\)\* │
└───────────────────────────────┘replaceAll
Introduit dans : v1.1.0
Remplace toutes les occurrences de la sous-chaîne pattern dans la chaîne haystack par la chaîne replacement.
Syntaxe
replaceAll(haystack, pattern, replacement)Alias : replace
Arguments
haystack— La chaîne d’entrée dans laquelle effectuer la recherche.Stringpattern— La sous-chaîne à rechercher et à remplacer.const Stringreplacement— La chaîne de remplacement.const String
Valeur renvoyée
Renvoie une chaîne dans laquelle toutes les occurrences du motif sont remplacées. String
Exemples
Remplacer toutes les occurrences
SELECT replaceAll('Hello, Hello world', 'Hello', 'Hi') AS res;┌─res──────────┐
│ Hi, Hi world │
└──────────────┘replaceOne
Introduit dans : v1.1.0
Remplace la première occurrence de la sous-chaîne pattern dans haystack par la chaîne de remplacement replacement.
Syntaxe
replaceOne(haystack, pattern, replacement)Arguments
haystack— La chaîne d’entrée dans laquelle effectuer la recherche.Stringpattern— La sous-chaîne à rechercher et à remplacer.const Stringreplacement— La chaîne de remplacement.const String
Valeur renvoyée
Renvoie une chaîne dans laquelle la première occurrence de la sous-chaîne a été remplacée. String
Exemples
Remplacer la première occurrence
SELECT replaceOne('Hello, Hello world', 'Hello', 'Hi') AS res;┌─res─────────────┐
│ Hi, Hello world │
└─────────────────┘replaceRegexpAll
Introduit dans : v1.1.0
Comme replaceRegexpOne, mais remplace toutes les occurrences du motif.
Exception : si une expression régulière correspond à une sous-chaîne vide, le remplacement n’est pas effectué plus d’une fois.
Syntaxe
replaceRegexpAll(haystack, pattern, replacement)Alias : REGEXP_REPLACE
Arguments
haystack— La chaîne d’entrée dans laquelle effectuer la recherche.Stringpattern— Le motif d’expression régulière à rechercher.const Stringreplacement— La chaîne par laquelle remplacer le motif ; elle peut contenir des substitutions.const String
Valeur renvoyée
Renvoie une chaîne dans laquelle toutes les correspondances de l’expression régulière sont remplacées. String
Exemples
Remplace tous les caractères par une version doublée
SELECT replaceRegexpAll('Hello123', '.', '\\0\\0') AS res┌─res──────────────┐
│ HHeelllloo112233 │
└──────────────────┘Exemple de remplacement d’une sous-chaîne vide
SELECT replaceRegexpAll('Hello, World!', '^', 'here: ') AS res┌─res─────────────────┐
│ here: Hello, World! │
└─────────────────────┘replaceRegexpOne
Introduit dans : v1.1.0
Remplace la première occurrence de la sous-chaîne correspondant à l’expression régulière pattern (en syntaxe re2) dans haystack par la chaîne replacement.
replacement peut contenir des substitutions \0-\9.
Les substitutions \1-\9 correspondent aux 1er à 9e groupes de capture (sous-correspondances), tandis que la substitution \0 correspond à l’ensemble de la correspondance.
Pour utiliser un caractère \ littéral dans les chaînes pattern ou replacement, échappez-le avec \.
Gardez également à l’esprit que les littéraux de chaîne nécessitent un échappement supplémentaire.
Syntaxe
replaceRegexpOne(haystack, pattern, replacement)Arguments
haystack— La chaîne d’entrée dans laquelle effectuer la recherche.Stringpattern— Le motif d’expression régulière à rechercher.const Stringreplacement— La chaîne de remplacement du motif ; elle peut contenir des substitutions.const String
Valeur renvoyée
Renvoie une chaîne dans laquelle la première correspondance à l’expression régulière est remplacée. String
Exemples
Conversion de dates ISO au format américain
SELECT replaceRegexpOne(d, '(\\d{4})-(\\d{2})-(\\d{2})', '\\2/\\3/\\1') AS res
FROM values('d String', '2014-03-17', '2014-03-18', '2014-03-19')┌─res────────┐
│ 03/17/2014 │
│ 03/18/2014 │
│ 03/19/2014 │
└────────────┘Copier une chaîne de caractères dix fois
SELECT replaceRegexpOne('Hello, World!', '.*', '\\0\\0\\0\\0\\0\\0\\0\\0\\0\\0') AS res┌─res────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World!Hello, World! │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘translate
Introduit dans : v22.7.0
Remplace les caractères de la chaîne s à l’aide d’une correspondance caractère par caractère définie par les chaînes from et to.
from et to doivent être des chaînes ASCII constantes.
Si from et to ont la même longueur, chaque occurrence du premier caractère de from dans s est remplacée par le premier caractère de to, la deuxième occurrence du caractère de from dans s est remplacée par le deuxième caractère de to, et ainsi de suite.
Si from contient plus de caractères que to, toutes les occurrences des caractères situés à la fin de from et n’ayant pas de caractère correspondant dans to sont supprimées de s.
Les caractères non ASCII de s ne sont pas modifiés par la fonction.
Syntaxe
translate(s, from, to)Arguments
s— La chaîne d’entrée à traduire.Stringfrom— Une chaîne ASCII constante contenant les caractères à remplacer.const Stringto— Une chaîne ASCII constante contenant les caractères de remplacement.const String
Valeur renvoyée
Renvoie une chaîne avec les traductions de caractères appliquées. String
Exemples
Correspondance des caractères
SELECT translate('Hello, World!', 'delor', 'DELOR') AS res┌─res───────────┐
│ HELLO, WORLD! │
└───────────────┘Longueurs différentes
SELECT translate('clickhouse', 'clickhouse', 'CLICK') AS res┌─res───┐
│ CLICK │
└───────┘translateUTF8
Introduit dans : v22.7.0
Comme translate, mais en supposant que s, from et to sont des chaînes encodées en UTF-8.
Syntaxe
translateUTF8(s, from, to)Arguments
s— Chaîne d’entrée UTF-8 à convertir.Stringfrom— Chaîne UTF-8 constante contenant les caractères à remplacer.const Stringto— Chaîne UTF-8 constante contenant les caractères de remplacement.const String
Valeur renvoyée
Renvoie une valeur de type String. String
Exemples
Conversion de caractères UTF-8
SELECT translateUTF8('Münchener Straße', 'üß', 'us') AS res;┌─res──────────────┐
│ Munchener Strase │
└──────────────────┘