La commande MySQL CONCAT vous permet de combiner deux ou plusieurs chaînes de ca­rac­tères en une. MySQL CONCAT n’autorise pas les sé­pa­ra­teurs, mais la commande MySQL CONCAT_WS vous permet de combiner et d’afficher encore plus clai­re­ment les in­for­ma­tions sou­hai­tées.

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

Le fonc­tion­ne­ment du système de gestion de base de données re­la­tion­nelle MySQL est basé sur des tables. Vos données sont en­re­gis­tré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’in­for­ma­tions contenues dans deux ou plusieurs tables.

MySQL CONCAT cor­res­pond donc à la commande qui vous permet de fusionner plusieurs colonnes. Vous pouvez utiliser cette fonc­tion­na­lité relative aux chaînes de ca­rac­tères pour con­ca­té­ner deux ou plusieurs ex­pres­sions, qui sont alors re­grou­pées et s’affichent sous forme d’une seule chaîne de ca­rac­tères. En ce qui concerne la commande MySQL CONCAT, dif­fé­rentes pos­si­bi­li­tés d’uti­li­sa­tion s’offrent à vous. Son nom, « MySQL CONCAT », vient du verbe anglais « con­ca­te­nate » (« con­ca­té­ner »).

Comme MySQL stocke les données dans plusieurs tables com­por­tant dif­fé­rentes colonnes et lignes, celles-ci sont na­tu­rel­le­ment dis­tinctes les unes des autres. Pour certaines requêtes ou certaines tâches, il peut toutefois s’avérer né­ces­saire d’afficher ces in­for­ma­tions ensemble ; nous vous proposons des exemples ci-dessous. À titre indicatif, il peut être in­té­res­sant de combiner un nom, un prénom et une adresse. Comme ces in­for­ma­tions sont avant tout stockées in­di­vi­duel­le­ment dans des colonnes, vous pouvez les re­cher­cher ou les afficher sé­pa­ré­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 ex­pres­sions 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 ex­pres­sions contenant une valeur numérique en une chaîne de ca­rac­tères binaire. Les chaînes de ca­rac­tères binaires restent binaires, de même que les chaînes de ca­rac­tères non binaires restent non binaires. Une ex­pres­sion com­por­tant la valeur « 0 » conserve également cette valeur « 0 ».

La commande MySQL CONCAT_WS est une variante de la commande MySQL CONCAT de base ; elle fonc­tionne à l’aide d’un sé­pa­ra­teur entre les dif­fé­rentes chaînes de ca­rac­tères, alors que l’uti­li­sa­tion de sé­pa­ra­teurs 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é­pa­ra­teur.

MySQL CONCAT : exemples

Pour com­prendre le fonc­tion­ne­ment de la commande MySQL CONCAT, il peut s’avérer utile de s’in­té­res­ser à quelques exemples simples. Nous allons sim­ple­ment commencer par relier deux chaînes de ca­rac­tères entre elles. Voici ce que nous obtenons :

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

Dans ce cas, vous pouvez voir que le résultat est sim­ple­ment « MyS­QL­CON­CAT ». À 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 fonc­tion­ne­ment 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 dif­fé­rentes colonnes, com­pre­nant 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 in­dé­pen­dam­ment 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 com­men­ç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 in­for­ma­tions. 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é­sen­tant plusieurs in­for­ma­tions 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 res­sem­bler le code cor­res­pon­dant :

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 main­te­nant le résultat :

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