AnalyticDB for MySQL prend en charge un ensemble de fonctions de chaîne pour les tâches courantes de traitement des chaînes : conversion de la casse, extraction de sous-chaînes, recherche de motifs, encodage et décodage des données, etc. Cette rubrique décrit la syntaxe et l'utilisation de chaque fonction, avec des exemples.
Fonctions abordées dans cette rubrique :
| Catégorie | Fonctions |
|---|---|
| Longueur et informations sur les caractères | ASCII, BIT_LENGTH, CHAR_LENGTH ou CHARACTER_LENGTH, LENGTH ou OCTET_LENGTH, ORD |
| Conversion de la casse | LOWER ou LCASE, UPPER ou UCASE |
| Concaténation et mise en forme | CONCAT, CONCAT_WS, FORMAT, REPEAT, SPACE |
| Sous-chaînes et extraction | LEFT, MID, RIGHT, SUBSTR ou SUBSTRING, SUBSTRING_INDEX |
| Recherche et position | FIELD, FIND_IN_SET, INSTR, LOCATE, POSITION |
| Correspondance de motif | LIKE, RLIKE ou REGEXP |
| Remplissage et rognage | LPAD, LTRIM, RPAD, RTRIM, TRIM |
| Fractionnement | SPLIT, SPLIT_PART, SPLIT_TO_MAP |
| Encodage et décodage | BIN, CHAR, FROM_BASE64, FROM_UTF8, HEX, OCT, TO_BASE64, TO_UTF8, UNHEX |
| Comparaison | STRCMP |
| Opérations sur les ensembles | ELT, EXPORT_SET, MAKE_SET |
| Remplacement et inversion | REPLACE, REVERSE |
| Chiffrement et hachage | ENCRYPT, MD5_MUR |
ASCII
ascii(str)
Renvoie la valeur décimale ASCII du caractère le plus à gauche de str.
| Paramètre | Type | Description |
|---|---|---|
str |
VARCHAR | Chaîne d'entrée ou caractère unique |
Type de retour : BIGINT
Exemples :
SELECT ascii('2');
+------------+
| ascii('2') |
+------------+
| 50 |
+------------+
SELECT ascii('dx');
+-------------+
| ascii('dx') |
+-------------+
| 100 |
+-------------+
BIN
bin(N)
Renvoie la représentation binaire sous forme de chaîne de N.
| Paramètre | Type | Description |
|---|---|---|
N |
BIGINT | Entier à convertir |
Type de retour : VARCHAR
Notes d'utilisation :
Si
NestNULL, la valeurNULLest renvoyée.
Exemple :
SELECT bin(12);
+---------+
| bin(12) |
+---------+
| 1100 |
+---------+
BIT_LENGTH
bit_length(str)
Renvoie la longueur de str en bits.
| Paramètre | Type | Description |
|---|---|---|
str |
VARCHAR | Chaîne d'entrée |
Type de retour : BIGINT
Exemples :
SELECT bit_length('text');
+--------------------+
| bit_length('text') |
+--------------------+
| 32 |
+--------------------+
SELECT bit_length('China');
+---------------------+
| bit_length('China') |
+---------------------+
| 40 |
+---------------------+
CHAR
char(N1, N2, ...)
Renvoie une chaîne composée des caractères correspondant aux codes ASCII décimaux de N1, N2, etc.
| Paramètre | Type | Description |
|---|---|---|
N1, N2, ... |
BIGINT | Un ou plusieurs codes ASCII entiers |
Type de retour : VARBINARY
Exemple :
SELECT char(97,110,97,108,121,116,105,99,100,98);
+-------------------------------------------+
| char(97,110,97,108,121,116,105,99,100,98) |
+-------------------------------------------+
| analyticdb |
+-------------------------------------------+
CHAR_LENGTH ou CHARACTER_LENGTH
char_length(str)
character_length(str)
Renvoie la longueur de str en caractères.
| Paramètre | Type | Description |
|---|---|---|
str |
VARCHAR | Chaîne d'entrée |
Type de retour : BIGINT
Notes d'utilisation :
Chaque caractère chinois compte pour
1.
Exemples :
SELECT char_length('China');
+----------------------+
| char_length('China') |
+----------------------+
| 5 |
+----------------------+
SELECT char_length('abc');
+--------------------+
| char_length('abc') |
+--------------------+
| 3 |
+--------------------+
CONCAT
concat(str1, ..., strN)
Concatène plusieurs chaînes en une seule.
| Paramètre | Type | Description |
|---|---|---|
str1, ..., strN |
VARCHAR | Deux chaînes ou plus à concaténer |
Type de retour : VARCHAR
Notes d'utilisation :
Si l'un des arguments est
NULL, la valeur de retour estNULL.
Exemples :
SELECT concat('aliyun', ', ', 'analyticdb');
+--------------------------------------+
| concat('aliyun', ', ', 'analyticdb') |
+--------------------------------------+
| aliyun, analyticdb |
+--------------------------------------+
SELECT concat('abc', null, 'def');
+--------------------------+
| concat('abc',null,'def') |
+--------------------------+
| NULL |
+--------------------------+
CONCAT_WS
concat_ws(separator, str1, ..., strN)
Concatène plusieurs chaînes à l'aide d'un séparateur spécifié. Les valeurs NULL parmi les arguments de type chaîne sont ignorées.
| Paramètre | Type | Description |
|---|---|---|
separator |
VARCHAR | Délimiteur inséré entre chaque chaîne |
str1, ..., strN |
VARCHAR | Chaînes à concaténer |
Type de retour : VARCHAR
Notes d'utilisation :
Les arguments de type chaîne
NULLsont ignorés : ils ne génèrent ni double séparateur ni valeur vide dans la sortie.
Exemples :
SELECT concat_ws(',', 'First name', 'Second name', 'Last Name') AS result;
+----------------------------------+
| result |
+----------------------------------+
| First name,Second name,Last Name |
+----------------------------------+
SELECT concat_ws(',', 'First name', NULL, 'Last Name') AS result;
+----------------------+
| result |
+----------------------+
| First name,Last Name |
+----------------------+
ELT
elt(N, str1, ..., strN)
Renvoie la N-ième chaîne de la liste.
| Paramètre | Type | Description |
|---|---|---|
N |
BIGINT | Index basé sur 1 dans la liste de chaînes |
str1, ..., strN |
VARCHAR | Liste de chaînes |
Type de retour : VARCHAR
Notes d'utilisation :
Si
N < 1ou siNest supérieur au nombre d'arguments de type chaîne, la valeurNULLest renvoyée.
Exemple :
SELECT elt(4, 'Aa', 'Bb', 'Cc', 'Dd');
+--------------------------------+
| elt(4, 'Aa', 'Bb', 'Cc', 'Dd') |
+--------------------------------+
| Dd |
+--------------------------------+
ENCRYPT
encrypt(x, y)
Chiffre x en utilisant y comme valeur de sel.
| Paramètre | Type | Description |
|---|---|---|
x |
VARBINARY | Chaîne à chiffrer |
y |
VARCHAR | Valeur de sel |
Type de retour : VARBINARY
Exemple :
SELECT encrypt('abdABC123', 'key');
+--------------------------------------------------------+
| encrypt('abdABC123','key') |
+--------------------------------------------------------+
| 0x6B657A617A6D63496F2E614377 |
+--------------------------------------------------------+
EXPORT_SET
export_set(bits, onstr, offstr [, separator [, number_of_bits]])
Convertit bits en représentation binaire et renvoie une chaîne construite en remplaçant chaque position de bit par onstr (pour le bit 1) ou offstr (pour le bit 0), séparés par separator. Les bits sont vérifiés de droite à gauche.
| Paramètre | Type | Description |
|---|---|---|
bits |
BIGINT | Entier à convertir en binaire |
onstr |
VARCHAR | Chaîne à utiliser pour la valeur de bit 1 |
offstr |
VARCHAR | Chaîne à utiliser pour la valeur de bit 0 |
separator |
VARCHAR | (Facultatif) Délimiteur entre les valeurs de sortie |
number_of_bits |
BIGINT | (Facultatif) Nombre de bits à vérifier, de droite à gauche. La valeur par défaut est 64 |
Type de retour : VARCHAR
Notes d'utilisation :
Si
number_of_bitsest supérieur à64, il est limité à64.Si
number_of_bitsest égal à-1, la valeur par défaut64est utilisée.
Exemples :
Convertissez 5 en binaire et vérifiez les deux bits les plus à droite. Remplacez 1 par a et 0 par b, séparés par des virgules :
SELECT export_set(5, 'a', 'b', ',', 2);
+-----------------------------+
| export_set(5,'a','b',',',2) |
+-----------------------------+
| a,b |
+-----------------------------+
Convertissez 6 en binaire et vérifiez les 10 bits les plus à droite. Remplacez 1 par 1 et 0 par 0, séparés par des virgules :
SELECT export_set(6, '1', '0', ',', 10);
+------------------------------+
| export_set(6,'1','0',',',10) |
+------------------------------+
| 0,1,1,0,0,0,0,0,0,0 |
+------------------------------+
FIELD
FIELD(str, str1, str2, ..., strN)
Renvoie la position de str dans la liste str1, str2, ..., strN.
| Paramètre | Type | Description |
|---|---|---|
str |
VARCHAR | Chaîne à rechercher |
str1, ..., strN |
VARCHAR | Liste de chaînes dans laquelle effectuer la recherche |
Type de retour : BIGINT
Notes d'utilisation :
Renvoie
0sistrn'est pas trouvé dans la liste.
Exemple :
SELECT FIELD('Bb', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff');
+-------------------------------------------+
| FIELD('Bb', 'Aa', 'Bb', 'Cc', 'Dd', 'Ff') |
+-------------------------------------------+
| 2 |
+-------------------------------------------+
FIND_IN_SET
find_in_set(str, strlist)
Renvoie la position de str dans la liste séparée par des virgules strlist.
| Paramètre | Type | Description |
|---|---|---|
str |
VARCHAR | Chaîne à rechercher |
strlist |
VARCHAR | Liste de chaînes séparées par des virgules |
Type de retour : BIGINT
Notes d'utilisation :
Renvoie
0sistrn'est pas trouvé dansstrlist, ou sistrlistest une chaîne vide.Renvoie
NULLsistroustrlistestNULL.
Exemple :
SELECT find_in_set('b', 'a,b,c,d');
+----------------------------+
| find_in_set('b','a,b,c,d') |
+----------------------------+
| 2 |
+----------------------------+
FORMAT
format(X, D)
Met en forme le nombre X selon le style #,###,###.##, arrondi à D décimales, et renvoie le résultat sous forme de chaîne.
| Paramètre | Type | Description |
|---|---|---|
X |
DOUBLE | Nombre à mettre en forme |
D |
BIGINT | Nombre de décimales |
Type de retour : VARCHAR
Notes d'utilisation :
Si
Dest égal à0, le résultat ne contient ni point décimal ni partie fractionnaire.
Exemple :
SELECT format(12332.123456, 4) AS result1,
format(12332.1, 4) AS result2,
format(12332.2, 0) AS result3;
+-------------+-------------+---------+
| result1 | result2 | result3 |
+-------------+-------------+---------+
| 12,332.1235 | 12,332.1000 | 12,332 |
+-------------+-------------+---------+
FROM_BASE64
from_base64(x)
Décode une chaîne encodée en Base64 et renvoie le résultat décodé.
| Paramètre | Type | Description |
|---|---|---|
x |
VARBINARY ou VARCHAR | Entrée encodée en Base64 |
Type de retour : VARBINARY
Notes d'utilisation :
La valeur de retour est de type VARBINARY. Pour obtenir un résultat de type VARCHAR, convertissez-le à l'aide de l'une des méthodes suivantes :
AnalyticDB for MySQL V3.1.4 ou version ultérieure : Utilisez
CAST AS VARCHAR. Pour plus d'informations, consultez la section Fonctions CAST.Antérieur à la version V3.1.4 : Utilisez la fonction
FROM_UTF8. Pour plus d'informations, consultez la section FROM_UTF8.
Exemples :
L'entrée est une chaîne VARCHAR :
SELECT from_base64('Q2hpbmE=');
+--------------------------------------------------+
| from_base64('Q2hpbmE=') |
+--------------------------------------------------+
| 0x4368696E61 |
+--------------------------------------------------+
Pour obtenir la valeur VARCHAR d'origine, convertissez le résultat :
SELECT cast(from_base64('Q2hpbmE=') AS varchar);
+------------------------------------------+
| cast(from_base64('Q2hpbmE=') AS varchar) |
+------------------------------------------+
| China |
+------------------------------------------+
L'entrée est une valeur VARBINARY :
SELECT from_base64(cast(to_base64('China') AS varbinary));
+--------------------------------------------------------------------------------------------------------+
| from_base64(cast(to_base64('China') AS varbinary)) |
+--------------------------------------------------------------------------------------------------------+
| 0x4368696E61 |
+--------------------------------------------------------------------------------------------------------+
FROM_UTF8
from_utf8(x)
from_utf8(x, y)
Décode une valeur binaire encodée en UTF-8 et renvoie une chaîne VARCHAR.
from_utf8(x)— Décodexet renvoie le résultat décodé.from_utf8(x, y)— Décodexen remplaçant toutes les séquences d'octets non valides pary.
| Paramètre | Type | Description |
|---|---|---|
x |
VARBINARY | Entrée encodée en UTF-8 à décoder |
y |
VARCHAR ou BIGINT | (Facultatif) Caractère de remplacement pour les octets non valides. Accepte le caractère lui-même (par exemple, #) ou son code ASCII (par exemple, 35). La valeur par défaut est une chaîne vide si ce paramètre est omis |
Type de retour : VARCHAR
Exemples :
Décoder une chaîne encodée en UTF-8 valide :
SELECT from_utf8(to_utf8('hello'));
+-----------------------------+
| from_utf8(to_utf8('hello')) |
+-----------------------------+
| hello |
+-----------------------------+
Décoder une valeur non encodée en UTF-8 (les octets non valides sont remplacés par une chaîne vide par défaut) :
SELECT from_utf8(unhex('58BF'));
+--------------------------+
| from_utf8(unhex('58BF')) |
+--------------------------+
| X |
+--------------------------+
Remplacer les octets non valides par # :
SELECT from_utf8(unhex('58BF'), '#');
+-------------------------------+
| from_utf8(unhex('58BF'), '#') |
+-------------------------------+
| X# |
+-------------------------------+
Remplacer les octets non valides à l'aide du code ASCII 35 (équivalent à #) :
SELECT from_utf8(unhex('58BF'), '35');
+-------------------------------+
| from_utf8(unhex('58BF'), '35') |
+-------------------------------+
| X# |
+-------------------------------+
HEX
hex(x)
Renvoie la représentation hexadécimale sous forme de chaîne de x.
| Paramètre | Type | Description |
|---|---|---|
x |
BIGINT ou VARCHAR | Entier ou chaîne à convertir |
Type de retour : VARCHAR
Exemples :
Entrée entière :
SELECT hex(16);
+---------+
| hex(16) |
+---------+
| 10 |
+---------+
Entrée de type chaîne :
SELECT hex('16');
+-----------+
| hex('16') |
+-----------+
| 3136 |
+-----------+
INSTR
instr(str, substr)
Renvoie la position de la première occurrence de substr dans str.
| Paramètre | Type | Description |
|---|---|---|
str |
VARCHAR | Chaîne dans laquelle effectuer la recherche |
substr |
VARCHAR | Sous-chaîne à rechercher |
Type de retour : BIGINT
Exemple :
SELECT instr('foobarbar', 'bar');
+---------------------------+
| instr('foobarbar', 'bar') |
+---------------------------+
| 4 |
+---------------------------+
LEFT
LEFT(str, len)
Renvoie les len caractères les plus à gauche de str.
| Paramètre | Type | Description |
|---|---|---|
str |
VARCHAR | Chaîne d'entrée |
len |
BIGINT | Nombre de caractères à renvoyer |
Type de retour : VARCHAR
Notes d'utilisation :
Renvoie
NULLsistroulenestNULL.
Exemple :
SELECT LEFT('foobarbar', 5);
+----------------------+
| LEFT('foobarbar', 5) |
+----------------------+
| fooba |
+----------------------+
LENGTH ou OCTET_LENGTH
length(str)
octet_length(str)
Renvoie la longueur de str.
| Paramètre | Type | Description |
|---|---|---|
str |
VARCHAR | Chaîne d'entrée |
Type de retour : BIGINT
Exemple :
SELECT length('aliyun');
+------------------+
| length('aliyun') |
+------------------+
| 6 |
+------------------+
LIKE
expression [NOT] LIKE pattern [ESCAPE 'escape_char']
Compare expression au pattern. Renvoie 1 en cas de correspondance et 0 sinon.
| Paramètre | Type | Description |
|---|---|---|
expression |
VARCHAR | Chaîne à comparer |
pattern |
VARCHAR | Motif avec caractères génériques. Utilisez % pour correspondre à n'importe quelle séquence de caractères et _ pour correspondre à un seul caractère |
escape_char |
VARCHAR | (Facultatif) Caractère d'échappement qui traite le % ou le _ suivant comme un caractère littéral plutôt que comme un caractère générique |
Type de retour : BIGINT
Exemples :
Correspondance basique avec caractères génériques :
SELECT 'David!' LIKE 'David_' AS result1,
'David!' NOT LIKE 'David_' AS result2,
'David!' LIKE '%D%v%' AS result3;
+---------+---------+---------+
| result1 | result2 | result3 |
+---------+---------+---------+
| 1 | 0 | 1 |
+---------+---------+---------+
Utilisation d'un caractère d'échappement pour faire correspondre un trait de soulignement littéral :
SELECT 'David_' LIKE 'David|_' ESCAPE '|';
+----------------------------------+
| David_' LIKE 'David|_' ESCAPE '| |
+----------------------------------+
| 1 |
+----------------------------------+
LOCATE
locate(substr, str)
locate(substr, str, pos)
Renvoie la position de la première occurrence de substr dans str. Vous pouvez éventuellement démarrer la recherche à partir de la position pos.
| Paramètre | Type | Description |
|---|---|---|
substr |
VARCHAR | Sous-chaîne à rechercher |
str |
VARCHAR | Chaîne dans laquelle effectuer la recherche |
pos |
BIGINT | (Facultatif) Position de départ de la recherche |
Type de retour : BIGINT
Notes d'utilisation :
Renvoie
0sisubstrn'est pas trouvé dansstr.Renvoie
NULLsisubstroustrestNULL.
Exemples :
Recherche depuis le début :
SELECT locate('bar', 'foobarbar');
+----------------------------+
| locate('bar', 'foobarbar') |
+----------------------------+
| 4 |
+----------------------------+
Recherche à partir de la position 7 :
SELECT locate('bar', 'foobarbar', 7);
+-------------------------------+
| locate('bar', 'foobarbar', 7) |
+-------------------------------+
| 7 |
+-------------------------------+
LOWER ou LCASE
lower(str)
lcase(str)
Convertit toutes les lettres de str en minuscules.
| Paramètre | Type | Description |
|---|---|---|
str |
VARCHAR | Chaîne d'entrée |
Type de retour : VARCHAR
Exemple :
SELECT lower('Aliyun');
+-----------------+
| lower('Aliyun') |
+-----------------+
| aliyun |
+-----------------+
LPAD
lpad(str, len, padstr)
Ajoute des caractères de remplissage à gauche de str avec padstr jusqu'à atteindre une longueur totale de len caractères.
| Paramètre | Type | Description |
|---|---|---|
str |
VARCHAR | Chaîne à remplir |
len |
BIGINT | Longueur totale cible |
padstr |
VARCHAR | Chaîne de remplissage |
Type de retour : VARCHAR
Notes d'utilisation :
Si
strest plus longue quelen, la valeur de retour est tronquée àlencaractères.
Exemple :
SELECT lpad('Aliyun', 9, '#');
+----------------------+
| lpad('Aliyun',9,'#') |
+----------------------+
| ###Aliyun |
+----------------------+
LTRIM
ltrim(str)
Supprime tous les espaces situés au début de str.
| Paramètre | Type | Description |
|---|---|---|
str |
VARCHAR | Chaîne d'entrée |
Type de retour : VARCHAR
Exemple :
SELECT ltrim(' abc');
+----------------+
| ltrim(' abc') |
+----------------+
| abc |
+----------------+
MAKE_SET
make_set(bits, str1, str2, ...)
Renvoie un ensemble de chaînes séparées par des virgules, sélectionnées selon les positions de bits définies dans bits. str1 correspond au bit 0, str2 au bit 1, et ainsi de suite.
| Paramètre | Type | Description |
|---|---|---|
bits |
BIGINT | Masque de bits indiquant les chaînes à inclure |
str1, str2, ... |
VARCHAR | Chaînes correspondant à chaque position de bit |
Type de retour : VARCHAR
Notes d'utilisation :
Les valeurs
NULLprésentes dans la liste de chaînes ne sont pas incluses dans le résultat.
Exemples :
SELECT make_set(5, 'hello', 'nice', 'world');
+------------------------------------+
| make_set(5,'hello','nice','world') |
+------------------------------------+
| hello,world |
+------------------------------------+
5 s'écrit 101 en binaire ; les bits 0 et 2 sont donc activés, ce qui sélectionne hello et world.
SELECT make_set(1 | 4, 'hello', 'nice', NULL, 'world') AS result;
+--------+
| result |
+--------+
| hello |
+--------+
1 | 4 = 5 (soit 101 en binaire) ; les bits 0 et 2 sont donc activés. La chaîne associée au bit 2 étant NULL, seule hello est renvoyée.
MD5_MUR
MD5_MUR(x)
Calcule le hachage MD5 de x, puis le convertit en une valeur de hachage LONG à l'aide de l'algorithme MurmurHash3. Cette fonction présente un taux de collision plus faible que CRC32.
| Paramètre | Type | Description |
|---|---|---|
x |
VARCHAR | Chaîne d'entrée |
Type de retour : LONG
Prérequis : Nécessite la version 3.2.5 du noyau ou une version ultérieure.
Exemple :
SELECT MD5_MUR('TEST') AS result;
+--------------------------+
| result |
+--------------------------+
| -6711128042951586494 |
+--------------------------+
MID
mid(str, pos, len)
Renvoie une sous-chaîne de len caractères extraite de str, à partir de la position pos. Cette fonction équivaut à SUBSTR et SUBSTRING.
| Paramètre | Type | Description |
|---|---|---|
str |
VARCHAR | Chaîne d'entrée |
pos |
BIGINT | Position de départ (indexation à partir de 1). Utilisez une valeur négative pour compter à partir de la fin de la chaîne |
len |
BIGINT | Nombre de caractères à renvoyer |
Type de retour : VARCHAR
Exemples :
SELECT mid('Quadratically', 5, 6);
+--------------------------+
| mid('Quadratically',5,6) |
+--------------------------+
| ratica |
+--------------------------+
SELECT mid('Sakila', -5, 3);
+----------------------+
| mid('Sakila', -5, 3) |
+----------------------+
| aki |
+----------------------+
OCT
oct(N)
Renvoie la représentation octale de N sous forme de chaîne.
| Paramètre | Type | Description |
|---|---|---|
N |
BIGINT | Entier à convertir |
Type de retour : VARCHAR
Notes d'utilisation :
Renvoie
NULLsiNestNULL.
Exemple :
SELECT oct(12);
+---------+
| oct(12) |
+---------+
| 14 |
+---------+
ORD
ord(x)
Renvoie le code du caractère situé le plus à gauche dans x s'il s'agit d'un caractère multioctet.
| Paramètre | Type | Description |
|---|---|---|
x |
VARBINARY ou VARCHAR | Chaîne d'entrée |
Type de retour : LONG
Exemples :
Entrée VARCHAR :
SELECT ord('China');
+--------------+
| ord('China') |
+--------------+
| 67 |
+--------------+
Entrée VARBINARY :
SELECT ord(cast('China' AS varbinary));
+---------------------------------+
| ord(cast('China' AS varbinary)) |
+---------------------------------+
| 67 |
+---------------------------------+
POSITION
position(substr IN str)
Renvoie la position de la première occurrence de substr dans str. Les positions sont indexées à partir de 1.
| Paramètre | Type | Description |
|---|---|---|
substr |
VARCHAR | Sous-chaîne à rechercher |
str |
VARCHAR | Chaîne dans laquelle effectuer la recherche |
Type de retour : BIGINT
Notes d'utilisation :
Renvoie
0sisubstrn'est pas trouvé.
Exemple :
SELECT position('bar' IN 'foobarbar');
+--------------------------------+
| position('bar' in 'foobarbar') |
+--------------------------------+
| 4 |
+--------------------------------+
REPEAT
repeat(str, count)
Renvoie str répétée count fois.
| Paramètre | Type | Description |
|---|---|---|
str |
VARCHAR | Chaîne à répéter |
count |
BIGINT | Nombre de répétitions |
Type de retour : VARCHAR
Notes d'utilisation :
Renvoie une chaîne vide si
count < 1.Renvoie
NULLsistroucountestNULL.
Exemples :
SELECT repeat('a', 3);
+----------------+
| repeat('a', 3) |
+----------------+
| aaa |
+----------------+
SELECT repeat('abc', null);
+---------------------+
| repeat('abc', null) |
+---------------------+
| NULL |
+---------------------+
SELECT repeat(null, 3);
+-----------------+
| repeat(null, 3) |
+-----------------+
| NULL |
+-----------------+
REPLACE
replace(str, from_str, to_str)
Remplace toutes les occurrences de from_str dans str par to_str.
| Paramètre | Type | Description |
|---|---|---|
str |
VARCHAR | Chaîne d'entrée |
from_str |
VARCHAR | Sous-chaîne à remplacer |
to_str |
VARCHAR | Chaîne de remplacement |
Type de retour : VARCHAR
Exemple :
SELECT replace('WWW.aliyun.com', 'W', 'w');
+-------------------------------------+
| replace('WWW.aliyun.com', 'W', 'w') |
+-------------------------------------+
| www.aliyun.com |
+-------------------------------------+
REVERSE
reverse(str)
Renvoie str avec l'ordre des caractères inversé.
| Paramètre | Type | Description |
|---|---|---|
str |
VARCHAR | Chaîne d'entrée |
Type de retour : VARCHAR
Exemple :
SELECT reverse('123456');
+-------------------+
| reverse('123456') |
+-------------------+
| 654321 |
+-------------------+
RIGHT
RIGHT(str, len)
Renvoie les len caractères les plus à droite de str.
| Paramètre | Type | Description |
|---|---|---|
str |
VARCHAR | Chaîne d'entrée |
len |
BIGINT | Nombre de caractères à renvoyer |
Type de retour : VARCHAR
Notes d'utilisation :
Renvoie
NULLsistroulenestNULL.
Exemple :
SELECT RIGHT('abc', 3);
+----------------+
| RIGHT('abc',3) |
+----------------+
| abc |
+----------------+
RLIKE ou REGEXP
expression RLIKE pattern
expression REGEXP pattern
Renvoie 1 si expression correspond à l'expression régulière pattern, et 0 dans le cas contraire.
| Paramètre | Type | Description |
|---|---|---|
expression |
VARCHAR | Chaîne à faire correspondre |
pattern |
VARCHAR | Modèle d'expression régulière |
Type de retour : BOOLEAN
Notes d'utilisation :
Renvoie
NULLsiexpressionoupatternestNULL.
Exemples :
SELECT 'Michael!' REGEXP '.*';
+----------------------+
| Michael!' REGEXP '.* |
+----------------------+
| 1 |
+----------------------+
SELECT 'new*\n*line' REGEXP 'new\\*.\\*line';
+-------------------------------------+
| new*\n*line' REGEXP 'new\\*.\\*line |
+-------------------------------------+
| 0 |
+-------------------------------------+
SELECT 'c' REGEXP '^[a-d]';
+-------------------+
| c' REGEXP '^[a-d] |
+-------------------+
| 1 |
+-------------------+
RPAD
rpad(str, len, padstr)
Ajoute des caractères de remplissage à droite de str avec padstr jusqu'à atteindre une longueur totale de len caractères.
| Paramètre | Type | Description |
|---|---|---|
str |
VARCHAR | Chaîne à remplir |
len |
BIGINT | Longueur totale cible |
padstr |
VARCHAR | Chaîne de remplissage |
Type de retour : VARCHAR
Notes d'utilisation :
Si
strest plus longue quelen, la valeur de retour est tronquée àlencaractères.
Exemple :
SELECT rpad('Aliyun', 9, '#');
+----------------------+
| rpad('Aliyun',9,'#') |
+----------------------+
| Aliyun### |
+----------------------+
RTRIM
rtrim(str)
Supprime tous les espaces situés à la fin de str.
| Paramètre | Type | Description |
|---|---|---|
str |
VARCHAR | Chaîne d'entrée |
Type de retour : VARCHAR
Exemple :
SELECT rtrim('barbar ');
+--------------------+
| rtrim('barbar ') |
+--------------------+
| barbar |
+--------------------+
SPACE
space(N)
Renvoie une chaîne composée de N espaces.
| Paramètre | Type | Description |
|---|---|---|
N |
BIGINT | Nombre d'espaces |
Type de retour : VARCHAR
Notes d'utilisation :
Combinez cette fonction avec
concat()pour insérer des espaces dans une chaîne plus longue.
Exemple :
SELECT concat('#', space(6), '#');
+----------------------------+
| concat("#", space(6), "#") |
+----------------------------+
| # # |
+----------------------------+
SPLIT
split(string, delimiter)
Divise string à chaque occurrence de delimiter et renvoie les parties sous forme de tableau.
| Paramètre | Type | Description |
|---|---|---|
string |
VARCHAR | Chaîne d'entrée |
delimiter |
VARCHAR | Délimiteur utilisé pour la division |
Type de retour : ARRAY\<varchar\>
Exemple :
SELECT split('1#2#3', '#'),
split('#1#2#3#', '#'),
split('123', '#');
+---------------------+-----------------------+-------------------+
| split('1#2#3', '#') | split('#1#2#3#', '#') | split('123', '#') |
+---------------------+-----------------------+-------------------+
| ["1","2","3"] | ["","1","2","3",""] | ["123"] |
+---------------------+-----------------------+-------------------+
SPLIT_PART
split_part(string, delimiter, index)
Divise string selon delimiter et renvoie l'élément situé à la position index. L'indexation commence à 1.
| Paramètre | Type | Description |
|---|---|---|
string |
VARCHAR | Chaîne d'entrée |
delimiter |
VARCHAR | Délimiteur utilisé pour la division |
index |
BIGINT | Position (indexée à partir de 1) de l'élément à renvoyer |
Type de retour : VARCHAR
Notes d'utilisation :
Renvoie
NULLsiindexest supérieur au nombre de champs résultants.
Exemple :
SELECT split_part('A#B#C', '#', 2),
split_part('A#B#C', '#', 4);
+-----------------------------+-----------------------------+
| split_part('A#B#C', '#', 2) | split_part('A#B#C', '#', 4) |
+-----------------------------+-----------------------------+
| B | NULL |
+-----------------------------+-----------------------------+
SPLIT_TO_MAP
split_to_map(string, entryDelimiter, keyValueDelimiter)
Divise string en paires clé-valeur et renvoie une map. entryDelimiter sépare les différentes paires, tandis que keyValueDelimiter sépare chaque clé de sa valeur.
| Paramètre | Type | Description |
|---|---|---|
string |
VARCHAR | Chaîne d'entrée |
entryDelimiter |
VARCHAR | Délimiteur entre les paires clé-valeur |
keyValueDelimiter |
VARCHAR | Délimiteur entre la clé et la valeur au sein de chaque paire |
Type de retour : MAP\<varchar, varchar\>
Exemple :
SELECT split_to_map('k1:v1,k2:v2', ',', ':'),
split_to_map('', ',', ':');
+---------------------------------------+----------------------------+
| split_to_map('k1:v1,k2:v2', ',', ':') | split_to_map('', ',', ':') |
+---------------------------------------+----------------------------+
| {"k1":"v1","k2":"v2"} | {} |
+---------------------------------------+----------------------------+
STRCMP
strcmp(str1, str2)
Compare str1 et str2 selon l'ordre de tri actuel.
| Paramètre | Type | Description |
|---|---|---|
str1 |
VARCHAR | Première chaîne |
str2 |
VARCHAR | Deuxième chaîne |
Type de retour : BIGINT
Valeurs renvoyées :
0si les chaînes sont identiques-1sistr1est inférieure àstr21sistr1est supérieure àstr2
Exemple :
SELECT strcmp('text', 'text2');
+-------------------------+
| strcmp('text', 'text2') |
+-------------------------+
| -1 |
+-------------------------+
SUBSTR ou SUBSTRING
substr(str, pos)
substr(str FROM pos)
substr(str, pos, len)
substr(str FROM pos FOR len)
substring(str, pos)
substring(str FROM pos)
substring(str, pos, len)
substring(str FROM pos FOR len)
Renvoie une sous-chaîne de str à partir de la position pos, éventuellement limitée à len caractères.
| Paramètre | Type | Description |
|---|---|---|
str |
VARCHAR | Chaîne d'entrée |
pos |
BIGINT | Position de départ (indexation à partir de 1). Une valeur négative permet de compter à partir de la fin de la chaîne |
len |
BIGINT | (Facultatif) Nombre maximal de caractères à renvoyer. Si omis, tous les caractères depuis pos jusqu'à la fin sont renvoyés |
Type de retour : VARCHAR
Exemples :
Renvoyer tout le contenu à partir de la position 6 jusqu'à la fin :
SELECT substr('helloworld', 6);
+-------------------------+
| substr('helloworld', 6) |
+-------------------------+
| world |
+-------------------------+
Utilisation de la syntaxe FROM :
SELECT substr('helloworld' FROM 6);
+-----------------------------+
| substr('helloworld' FROM 6) |
+-----------------------------+
| world |
+-----------------------------+
Renvoyer 3 caractères à partir de la position 6 :
SELECT substr('helloworld', 6, 3);
+----------------------------+
| substr('helloworld', 6, 3) |
+----------------------------+
| wor |
+----------------------------+
Utilisation de la syntaxe FROM ... FOR :
SELECT substr('helloworld' FROM 6 FOR 3);
+-----------------------------------+
| substr('helloworld' FROM 6 FOR 3) |
+-----------------------------------+
| wor |
+-----------------------------------+
SUBSTRING_INDEX
substring_index(str, delim, count)
Renvoie une sous-chaîne de str coupée à la count-ième occurrence de delim.
| Paramètre | Type | Description |
|---|---|---|
str |
VARCHAR | Chaîne d'entrée |
delim |
VARCHAR | Délimiteur à rechercher (sensible à la casse) |
count |
BIGINT | Nombre d'occurrences du délimiteur. Les valeurs positives comptent depuis la gauche et renvoient tout ce qui se trouve à gauche de la correspondance ; les valeurs négatives comptent depuis la droite et renvoient tout ce qui se trouve à droite |
Type de retour : VARCHAR
Notes d'utilisation :
La recherche de
delimest sensible à la casse.
Exemple :
Renvoyer tout le contenu avant la deuxième occurrence de . :
SELECT substring_index('www.aliyun.com', '.', 2);
+-------------------------------------------+
| substring_index('www.aliyun.com', '.', 2) |
+-------------------------------------------+
| www.aliyun |
+-------------------------------------------+
TO_BASE64
to_base64(x)
Renvoie x encodé en Base64.
| Paramètre | Type | Description |
|---|---|---|
x |
VARBINARY ou VARCHAR | Données à encoder |
Type de retour : VARCHAR
Exemples :
Entrée VARCHAR :
SELECT to_base64('China');
+--------------------+
| to_base64('China') |
+--------------------+
| Q2hpbmE= |
+--------------------+
Entrée VARBINARY :
SELECT to_base64(cast('China' AS varbinary));
+---------------------------------------+
| to_base64(cast('China' AS varbinary)) |
+---------------------------------------+
| Q2hpbmE= |
+---------------------------------------+
TO_UTF8
to_utf8(x)
Renvoie x encodé en UTF-8.
| Paramètre | Type | Description |
|---|---|---|
x |
VARCHAR | Chaîne d'entrée |
Type de retour : VARCHAR
Exemple :
SELECT from_utf8(to_utf8('China'));
+-----------------------------+
| from_utf8(to_utf8('China')) |
+-----------------------------+
| China |
+-----------------------------+
TRIM
trim([remstr FROM] str)
trim([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
Supprime les espaces de début et de fin de la chaîne str, ou retire les caractères correspondant à remstr du ou des côtés spécifiés.
| Paramètre | Type | Description | ||
|---|---|---|---|---|
str |
VARCHAR | Chaîne d'entrée | ||
remstr |
VARCHAR | (Facultatif) Caractère(s) à supprimer. L'espace est utilisé par défaut | ||
`BOTH |
LEADING | TRAILING` |
— |
(Facultatif) Côté à partir duquel supprimer les caractères. La valeur par défaut est |
Type de retour : VARCHAR
Exemples :
Suppression des espaces de début et de fin :
SELECT trim(' bar ');
+------------------+
| trim(' bar ') |
+------------------+
| bar |
+------------------+
Suppression d'un caractère spécifique des deux côtés :
SELECT trim(BOTH 'x' FROM 'xxxbarxxx');
+---------------------------------+
| trim(BOTH 'x' FROM 'xxxbarxxx') |
+---------------------------------+
| bar |
+---------------------------------+
Suppression uniquement au début :
SELECT trim(LEADING 'x' FROM 'xxxbarxxx');
+------------------------------------+
| trim(LEADING 'x' FROM 'xxxbarxxx') |
+------------------------------------+
| barxxx |
+------------------------------------+
Suppression uniquement à la fin :
SELECT trim(TRAILING 'x' FROM 'xxxbarxxx');
+-------------------------------------+
| trim(TRAILING 'x' from 'xxxbarxxx') |
+-------------------------------------+
| xxxbar |
+-------------------------------------+
UNHEX
unhex(x)
Interprète chaque paire de chiffres hexadécimaux dans x comme une valeur d'octet et renvoie la chaîne binaire correspondante.
| Paramètre | Type | Description |
|---|---|---|
x |
VARBINARY ou VARCHAR | Chaîne hexadécimale à décoder |
Type de retour : VARBINARY
Remarques sur l'utilisation :
La valeur de retour est de type VARBINARY. Pour obtenir un résultat VARCHAR, convertissez-la à l'aide de l'une des méthodes suivantes :
AnalyticDB for MySQL V3.1.4 ou version ultérieure : Utilisez
CAST AS VARCHAR. Pour plus d'informations, consultez la rubrique Fonctions CAST.Versions antérieures à la V3.1.4 : Utilisez la fonction
FROM_UTF8. Pour plus d'informations, consultez la section FROM_UTF8.
Si l'entrée contient des caractères non hexadécimaux, la valeur NULL est renvoyée.
Exemples :
Entrée VARCHAR — utilisez CAST pour obtenir le résultat VARCHAR :
SELECT unhex(hex('China'));
+------------------------------------------+
| unhex(hex('China')) |
+------------------------------------------+
| China |
+------------------------------------------+
Pour obtenir explicitement la valeur VARCHAR :
SELECT cast(unhex(hex('China')) AS varchar);
+--------------------------------------+
| cast(unhex(hex('China')) AS varchar) |
+--------------------------------------+
| China |
+--------------------------------------+
Entrée VARBINARY :
SELECT unhex(cast(hex('China') AS varbinary));
+------------------------------------------+
| unhex(cast(hex('China') AS varbinary)) |
+------------------------------------------+
| China |
+------------------------------------------+
UPPER ou UCASE
upper(str)
ucase(str)
Convertit toutes les lettres de la chaîne str en majuscules.
| Paramètre | Type | Description |
|---|---|---|
str |
VARCHAR | Chaîne d'entrée |
Type de retour : VARCHAR
Exemple :
SELECT upper('Aliyun');
+-----------------+
| upper('Aliyun') |
+-----------------+
| ALIYUN |
+-----------------+