Dans MariaDB, CONCAT()
est une fonction de chaîne intégrée qui effectue une concaténation de chaîne sur ses arguments. Elle renvoie la chaîne résultant de la concaténation de ses arguments.
La concaténation est l'opération consistant à joindre deux ou plusieurs chaînes de bout en bout.
CONCAT()
accepte un ou plusieurs arguments, qui sont tous renvoyés sous la forme d'une seule chaîne concaténée.
Syntaxe
La syntaxe ressemble à ceci :
CONCAT( str1, str2, ... )
Où str1, str2, …
représentent les arguments de chaîne pour lesquels concaténer.
Exemple
Voici un exemple de base :
SELECT CONCAT('Homer', 'Jay');
Résultat :
+------------------------+| CONCAT('Homer', 'Jay') |+------------------------+| HomerJay |+-----------------------+
Dans ce cas, nous avons concaténé deux chaînes.
Le voici à nouveau, mais cette fois nous ajoutons un espace entre les deux :
SELECT CONCAT('Homer', ' ', 'Jay');
Résultat :
+-----------------------------+| CONCAT('Homère', ' ', 'Jay') |+-----------------------------+| Homer Jay |+-----------------------------+
Dans ce cas, nous avons concaténé trois chaînes.
Le voici avec cinq :
SELECT CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson');
Résultat :
+---------------------------------------------+ | CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson') |+---------------------------------------- -----------------+| Homer Jay Simpson |+--------------------------------------------- +
Chaînes binaires
Si l'un des arguments est une chaîne binaire, le résultat est une chaîne binaire :
SELECT CONCAT(BINARY 'Homer', 'Jay');
Résultat :
+---------------------------------------------+| CONCAT(BINAIRE 'Homer', 'Jay') |+-------------------------------+| HomerJay |+-------------------------------+
Nous pouvons utiliser le COLLATION()
fonction pour vérifier la collation du résultat :
SELECT COLLATION(CONCAT(BINARY 'Homer', 'Jay'));
Résultat :
+-------------------------------------------------------+| COLLATION(CONCAT(BINAIRE 'Homer', 'Jay')) |+------------------------------------------------ --------+| binaire |+------------------------------------------+
Si nous supprimons le BINARY
opérateur, nous obtenons un résultat différent :
SELECT COLLATION(CONCAT('Homer', 'Jay'));
Résultat :
+-----------------------------------+| COLLATION(CONCAT('Homer', 'Jay')) |+----------------------------------- +| utf8_general_ci |+-----------------------------------+
De plus, selon la documentation de MariaDB, les arguments numériques sont convertis en leur forme de chaîne binaire équivalente. Vous pouvez éviter cela en faisant un cast de type explicite (en utilisant CAST()
ou CONVERT()
).
Arguments nuls
Si l'un des arguments est null
, CONCAT()
renvoie null
.
Cependant, il y a une exception :en mode Oracle (c'est-à-dire sql_mode=ORACLE
), tout null
les arguments sont simplement ignorés.
Voyons d'abord comment CONCAT()
se comporte en mode par défaut.
Définissez notre session en mode par défaut :
SET SESSION sql_mode=DEFAULT;
Exécutez maintenant CONCAT()
avec un null
argument :
SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson');
Résultat :
+-------------------------------------------------+| CONCAT('Homer', ' ', null, ' ', 'Simpson') |+------------------------------ --------------+| NULL |+-------------------------------------------------+Comme prévu, le résultat est
null
.Basculons maintenant notre session en mode Oracle :
SET SESSION sql_mode=ORACLE;
Et maintenant, lançons le précédent
CONCAT()
encore un exemple :SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson');
Résultat :
+-------------------------------------------------+| CONCAT('Homer', ' ', null, ' ', 'Simpson') |+------------------------------ --------------+| Homer Simpson |+------------------------------------------------+Cette fois, il a ignoré le
null
argument, et a concaténé tous les autres non-null
arguments. Si vous regardez attentivement, vous verrez qu'il a concaténé les deux espaces, il y a donc un double espace entreHomer
etSimpson
.Pour un
null
-alternative sûre, utilisezCONCAT_WS()
. Cette fonction ignorenull
valeurs, même si vous n'êtes pas en mode Oracle.Alternativement, vous pouvez utiliser
IFNULL()
pour fournir une valeur alternative (chaîne) pournull
valeurs (comme une chaîne vide).Argument unique
Appel de
CONCAT()
avec un seul argument renvoie simplement cet argument :SELECT CONCAT('Homer');
Résultat :
+-----------------+| CONCAT('Homère') |+-----------------+| Homère |+-----------------+Argument manquant
Appel de
CONCAT()
sans passer d'arguments entraîne une erreur :SELECT CONCAT();
Résultat :
ERREUR 1582 (42000) :Nombre de paramètres incorrect dans l'appel à la fonction native 'CONCAT'