MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Comment CONCAT() fonctionne dans MariaDB

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, ... ) 

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 entre Homer et Simpson .

Pour un null -alternative sûre, utilisez CONCAT_WS() . Cette fonction ignore null valeurs, même si vous n'êtes pas en mode Oracle.

Alternativement, vous pouvez utiliser IFNULL() pour fournir une valeur alternative (chaîne) pour null 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'