MySQL CONCAT : comment fusionner des chaînes de caractères ?

La commande MySQL CONCAT vous permet de combiner deux ou plusieurs chaînes de caractères en une. MySQL CONCAT n’autorise pas les séparateurs, mais la commande MySQL CONCAT_WS vous permet de combiner et d’afficher encore plus clairement les informations souhaitées.

MySQL CONCAT : qu’est-ce que c’est ?

Le fonctionnement du système de gestion de base de données relationnelle MySQL est basé sur des tables. Vos données sont enregistrées de façon claire en colonnes et en lignes ; il vous suffit ensuite de les consulter ou encore de les relier, le cas échéant. Cela peut s’avérer utile si vous avez besoin d’informations contenues dans deux ou plusieurs tables.

MySQL CONCAT correspond donc à la commande qui vous permet de fusionner plusieurs colonnes. Vous pouvez utiliser cette fonctionnalité relative aux chaînes de caractères pour concaténer deux ou plusieurs expressions, qui sont alors regroupées et s’affichent sous forme d’une seule chaîne de caractères. En ce qui concerne la commande MySQL CONCAT, différentes possibilités d’utilisation s’offrent à vous. Son nom, « MySQL CONCAT », vient du verbe anglais « concatenate » (« concaténer »).

Comme MySQL stocke les données dans plusieurs tables comportant différentes colonnes et lignes, celles-ci sont naturellement distinctes les unes des autres. Pour certaines requêtes ou certaines tâches, il peut toutefois s’avérer nécessaire d’afficher ces informations ensemble ; nous vous proposons des exemples ci-dessous. À titre indicatif, il peut être intéressant de combiner un nom, un prénom et une adresse. Comme ces informations sont avant tout stockées individuellement dans des colonnes, vous pouvez les rechercher ou les afficher séparément. Toutefois, si vous avez besoin de combiner ces trois types de données, la commande MySQL CONCAT peut vous y aider.

CONCAT de MySQL : syntaxe

La syntaxe de base la commande MySQL CONCAT est très simple ; en cela, elle est semblable aux commandes MySQL DELETE et MySQL REPLACE. Toutes les expressions que vous souhaitez fusionner doivent être listées après le nom de la commande en elle-même et séparées par des virgules. Voici un exemple :

CONCAT (Expression1, Expression2, Expression3, …)
bash

Vous devez savoir que la commande MySQL CONCAT convertit les expressions contenant une valeur numérique en une chaîne de caractères binaire. Les chaînes de caractères binaires restent binaires, de même que les chaînes de caractères non binaires restent non binaires. Une expression comportant la valeur « 0 » conserve également cette valeur « 0 ».

La commande MySQL CONCAT_WS est une variante de la commande MySQL CONCAT de base ; elle fonctionne à l’aide d’un séparateur entre les différentes chaînes de caractères, alors que l’utilisation de séparateurs n’est pas autorisée avec la commande MySQL CONCAT. Voici comment se présente la syntaxe de base de la commande MySQL CONCAT_WS :

CONCAT_WS (Séparateur, Expression1, Expression2, Expression3, …)
bash

La commande MySQL CONCAT_WS ne renvoie la valeur « 0 » que s’il s’agit de la valeur du séparateur.

MySQL CONCAT : exemples

Pour comprendre le fonctionnement de la commande MySQL CONCAT, il peut s’avérer utile de s’intéresser à quelques exemples simples. Nous allons simplement commencer par relier deux chaînes de caractères entre elles. Voici ce que nous obtenons :

SELECT CONCAT (’MySQL’, ’CONCAT’);
bash

Dans ce cas, vous pouvez voir que le résultat est simplement « MySQLCONCAT ». À présent, si vous insérez une valeur nulle, voilà à quoi ressemble la commande :

SELECT CONCAT (’MySQL’, NULL, ’CONCAT’);
bash

Si cet exemple ne présente aucune véritable valeur ajoutée dans la pratique et se contente d’illustrer le fonctionnement de base de la commande, l’exemple suivant devrait vous être d’une plus grande utilité.

Nous allons pour cela utiliser une liste type de clients. Celle-ci se présente en différentes colonnes, comprenant notamment le numéro attribué au client, son prénom, son nom, son adresse ou encore son numéro de téléphone. Ces données sont toutes stockées indépendamment les unes des autres. La commande MySQL CONCAT peut vous aider à créer un résultat commun à celles-ci. Si vous souhaitez obtenir une liste de vos clients avec leurs noms complets, vous pouvez utiliser MySQL pour combiner à chaque fois un prénom, une espace et un nom. Pour ce faire, voici la commande à adopter :

SELECT CONCAT (Prénom, ’ ’, Nomfamille) Nomclient
FROM Listeclient;
bash

La liste de tous vos clients s’affiche alors, avec pour chacun leur prénom et leur nom.

MySQL CONCAT_WS : exemples

Reprenons l’exemple ci-dessus. Pour lister les noms en commençant par les noms de famille et séparer ceux-ci des prénoms par une virgule, vous devez utiliser la commande MySQL CONCAT_WS. La marche à suivre est similaire, mais la virgule se place avant le reste des informations. Voici l’exemple en question :

SELECT CONCAT_WS (’, ’, ’Dupond’, ’Marc’);
bash

Le résultat doit alors se présenter ainsi : « Dupond, Marc ».

N’hésitez pas à utiliser cette commande si vous souhaitez un résultat présentant plusieurs informations de manière claire. Dans ce dernier exemple, découvrez comment afficher une adresse complète à l’aide de la commande MySQL CONCAT_WS. Voilà ce à quoi doit ressembler le code correspondant :

SELECT
CONCAT_WS (CHAR(13),
CONCAT_WS (’ ’, Prénom, Nomfamille),
Ligneadresse1,
Ligneadresse2,
CONCAT_WS (’ ’, Codepostal, Ville),
Pays,
CONCAT_WS (CHAR(13), ’ ’)) AS Adresseclient
FROM Listeclient
bash

Et voici maintenant le résultat :

Adresse client
Marc Dupond
1 rue des Saules
75000 Paris
France
Pauline Martin
10 rue des Saules 
13000 Marseille
France
bash