mysql concat group_concat functions with examples
Ce tutoriel explique comment utiliser MySQL CONCAT avec les fonctions Select et GROUP_CONCAT avec la syntaxe et des exemples pratiques:
CONCAT est une fonction de chaîne prise en charge par MySQL pour combiner ou joindre deux ou plusieurs chaînes ensemble et les renvoyer sous la forme d'une valeur unique. Le nom CONCAT vient de la concaténation de verbes, ce qui signifie joindre 2 entités ou plus ensemble.
Dans ce didacticiel, nous allons apprendre l'utilisation de CONCAT avec des exemples de requêtes et d'autres variantes de la fonction CONCAT fournie par MySQL.
Ce que vous apprendrez:
Fonction MySQL CONCAT
Syntaxe:
La syntaxe de la fonction CONCAT est simple. Il contient simplement une liste séparée par des virgules des chaînes qui doivent être jointes.
CONCAT(string1, string2, ------ stringN)
Les types d'entrée et de sortie attendus par la fonction CONCAT sont des chaînes. Même s'il est fourni avec des nombres, la sortie finale sera String.
Par exemple:
#1) Avec des types d'entrée sous forme de chaînes.
SELECT CONCAT('string1', 'string2'); //Output string1string2
#deux) Avec entrée sous forme de nombres / nombres à virgule flottante.
SELECT CONCAT(1,2); //Output 12 SELECT CONCAT(1.1234,2); //Output 1.12342
Utilisation de CONCAT avec des instructions SELECT
CONCAT est le plus largement utilisé avec les requêtes SELECT, où il peut combiner des données de 2 colonnes ou plus dans une seule colonne.
Un exemple classique peut être, supposons que nous ayons une table qui a des colonnes séparées pour les champs firstName et lastName. Ainsi, lors de l'affichage des données, supposons que vous souhaitiez afficher le nom complet au lieu de firstName et lastName. Nous pouvons utiliser CONCAT et afficher les données sélectionnées en conséquence.
Voyons cela en action.
comment utiliser l'extension github pour visual studio
Commencez par créer une table Student avec des champs - id, prénom, nom, âge, date de naissance et département.
CREATE TABLE student (id INT PRIMARY KEY, fname VARCHAR(100), lname VARCHAR(100), age INT, dob DATE, department VARCHAR(100));
Insérez des données factices dans le tableau.
INSERT INTO student values (1,'Darren', 'Still', 32, '1988-05-20', 'ENGINEERING'), (2,'Abhishek', 'Kumar', 28, '1992-05-20', 'ACCOUNTING'), (3,'Amit', 'Singh', 30, '1990-09-20', 'ENGINEERING'), (4,'Steven', 'Johnson', 40, '1980-05-21', 'HUMAN RESOURCES'), (5,'Kartik', 'Shamungam', 20, '2000-05-12', 'TRAINEE');
Maintenant, écrivez une requête SELECT pour obtenir un nom complet sous forme de chaîne concaténée combinant le prénom et le nom.
SELECT CONCAT(fname,lname) as fullName from student
//Production
nom complet |
---|
DarrenStill |
AbhishekKumar |
AmitSingh |
StevenJohnson |
KartikShamungam |
Comme vous pouvez le voir dans la sortie ci-dessus, il n'y a pas d'espacement entre le prénom et le nom, ce qui le rend illisible. Nous pouvons ajouter un espacement en mettant à jour la fonction CONCAT pour avoir un caractère d'espace supplémentaire comme chaîne à concaténer.
SELECT CONCAT(fname, ' ', lname) as fullName from student
Cela garantirait qu'à chaque entrée, vous auriez un espacement supplémentaire entre les deux.
Utilisation de CONCAT avec GROUP
MySQL fournit une autre fonction appelée GROUP_CONCAT.
Il est similaire à CONCAT, mais il diffère dans la façon dont CONCAT est utilisé pour combiner des valeurs entre les colonnes, tandis que la fonction GROUP_CONCAT est principalement utilisée pour concaténer des valeurs entre les lignes.
Syntaxe MySQL GROUP_CONCAT
SELECT col1, col2, ..., colN GROUP_CONCAT ( (DISTINCT) col_name1 (ORDER BY clause) (SEPARATOR str_val) ) FROM table_name GROUP BY col_name2;
Ainsi, dans la fonction GROUP_CONCAT, vous pouvez voir:
- nom_col: Il s'agit de la colonne avec laquelle vous souhaitez concaténer. Il existe une clause DISTINCT facultative pour éviter de répéter les valeurs.
- COMMANDÉ PAR: La clause ORDER BY est utilisée pour spécifier l'ordre dans la liste concaténée et est facultative.
- SÉPARATEUR: Il s'agit à nouveau d'une clause facultative qui peut être utilisée pour définir un séparateur personnalisé entre les valeurs concaténées. Par défaut, la virgule (,) est le séparateur.
Exemples MySQL GROUP_CONCAT
Dans l'exemple de table Student ci-dessus, supposons que nous voulons trouver une liste des départements concaténés .
SELECT GROUP_CONCAT(department) as departments FROM student //Output ENGINEERING,ACCOUNTING,ENGINEERING,HUMAN RESOURCES,TRAINEE
Dans la requête ci-dessus,
- La sortie contient une liste séparée par des virgules de tous les départements disponibles dans la colonne Département.
- En outre, il existe des valeurs répétitives ( Par exemple, ENGINEERING) car nous n'avons pas spécifié de clause DISTINCT.
Essayons le même exemple avec la clause DISTINCT:
SELECT GROUP_CONCAT(DISTINCT department) as departments FROM student //Output ACCOUNTING,ENGINEERING,HUMAN RESOURCES,TRAINEE
Cela renverrait simplement les valeurs distinctes de la colonne department.
Ajoutez maintenant un séparateur personnalisé en tant que clause «|» et ORDER BY pour que les noms de service soient triés par ordre croissant
SELECT GROUP_CONCAT(DISTINCT department separator ' | ') as departments FROM student //Output ACCOUNTING | ENGINEERING | HUMAN RESOURCES | TRAINEE
Donc, dans la requête ci-dessus,
- Les noms de service sont triés par ordre croissant.
- Aucune valeur répétitive n'est renvoyée.
- Le séparateur passe de «,» à «| «.
Voyons voir un autre exemple pour lister les valeurs concaténées des étudiants dans chaque département.
Ici, nous ne voudrions pas aussi DISTINCT que 2 étudiants dans un département pourraient avoir le même nom.
SELECT department, GROUP_CONCAT(fname ORDER BY fname ASC SEPARATOR ' | ') AS students FROM student GROUP BY department
// Production
département | élèves |
---|---|
COMPTABILITÉ | Abhishek |
INGÉNIERIE | Amit | Darren |
RESSOURCES HUMAINES | Steven |
STAGIAIRE | Kartik |
Combinaison de CONCAT et GROUP_CONCAT
Dans l'exemple ci-dessus, supposons que nous souhaitons afficher les valeurs CONCATENATED du nom et du nom avec chaque département.
Pour ce faire, nous pouvons utiliser CONCAT dans la commande GROUP_CONCAT.
Voyons cela en action ci-dessous:
SELECT department, GROUP_CONCAT(CONCAT(fname, ' ', lname) order by fname asc SEPARATOR ' | ') as students from student group by department
//Production
département | élèves |
---|---|
COMPTABILITÉ | Abhishek kumar |
INGÉNIERIE | Amit Singh | Darren Still |
RESSOURCES HUMAINES | Steven Johnson |
STAGIAIRE | Kartik shamungam |
Gestion des valeurs NULL avec CONCAT
CONCAT attend des arguments String et renvoie la sortie sous forme de String.
Si une entrée de la fonction CONCAT est NULL, la sortie sera également NULL.
SELECT CONCAT('string1','string2', NULL); //Output NULL
Afin de gérer les valeurs NULL, vous pouvez utiliser une instruction ifNull dans la fonction CONCAT qui garantirait une valeur par défaut ou vide dans le cas de la valeur NULL de la colonne.
Supposons que nous ayons 2 chaînes et 1 valeur NULL pour CONCAT, comme dans l'exemple ci-dessus.
SELECT CONCAT('string1','string2', ifNull(NULL,'hello')); //Output string1string2hello
Dans la requête ci-dessus, nous avons ajouté une fonction ifNull entourant la valeur NULL (ou une colonne qui pourrait être NULL) - si la correspondance NULL est réussie, elle renverrait «bonjour» sinon la valeur réelle de la colonne.
Ainsi, dans la sortie, vous pouvez voir pour la chaîne NULL, «bonjour» est affiché.
Questions fréquemment posées
Q # 1) Comment fusionner des colonnes dans MySQL?
Répondre: MySQL fournit une fonction CONCAT pour combiner ou fusionner 2 ou plusieurs colonnes d'une ou plusieurs tables et renvoyer les valeurs fusionnées dans la sortie.
Q # 2) Où et quand dois-je utiliser la méthode concat dans MySQL?
Répondre: La méthode CONCAT est généralement utilisée contre l'affichage des résultats de la requête où vous souhaitez joindre 2 colonnes ou plus et les représenter comme une seule colonne.
Par exemple, supposons que vous ayez une table qui contient le prénom et le nom sous forme de colonnes séparées et que vous souhaitez les afficher sous la forme d'une seule entité appelée fullName - alors vous pouvez utiliser la fonction CONCAT pour fusionner les valeurs de la colonne prénom et nom et les afficher ensemble en une seule colonne.
Q # 3) Qu'est-ce que MySQL GROUP_CONCAT?
Répondre: Semblable à CONCAT, MySQL GROUP_CONCAT est également utilisé pour concaténer des valeurs dans une table. La différence ici est que CONCAT est utilisé pour combiner des valeurs sur des colonnes, GROUP_CONCAT vous donne la possibilité de combiner des valeurs sur des lignes.
Il est également important de noter que GROUP_CONCAT et CONCAT peuvent être combinés pour obtenir les résultats souhaités.
GROUP_CONCAT est généralement utilisé dans les scénarios où vous souhaitez GROUP ou combiner des valeurs sur des lignes. Par exemple - vous avez une table de produits avec le nom et la catégorie de produit et vous voulez lister tous les produits d'une catégorie donnée sous forme de valeurs séparées par des virgules, alors vous pouvez utiliser GROUP_CONCAT.
Mettre en doute:
SELECT categoryName, GROUP_CONCAT(itemName) AS itemList FROM products GROUP BY categoryName
Q # 4) Comment puis-je spécifier un séparateur à l'aide de la commande CONCAT?
Répondre: Avec CONCAT, vous pouvez spécifier le séparateur comme chaîne distincte à concaténer.
Par exemple: Supposons que vous souhaitiez utiliser «|» comme séparateur, puis dans la commande CONCAT, vous pouvez spécifier cette chaîne entre les noms de colonne que vous concaténez.
SELECT CONCAT(fname, '| ', lname) as fullName from student
Q # 5) Quelle est la différence entre les commandes CONCAT et CONCAT_WS?
Répondre: CONCAT_WS est une autre variante de CONCAT fournie par MySQL, qui permet à un utilisateur de spécifier un séparateur pour les colonnes qui sont concaténées.
Ceci est préférable à CONCAT dans les situations où vous souhaitez fusionner plus de colonnes et utiliser le même séparateur pour toutes les colonnes concaténées.
Exemple: Supposons qu'il y ait une table student avec des champs - fname, lname et address.
Maintenant, nous voulons concaténer ces trois champs et les séparer par «|».
Utilisant CONCAT , nous devons spécifier le séparateur comme une chaîne distincte à concaténer.
SELECT CONCAT(fname, '|', lname, '|', address) as mergedColumn from student
Alors qu'avec CONCAT_WS il vous suffit de spécifier le séparateur une fois.
SELECT CONCAT_WS('|', fname, lname, address) as mergedColumn from student
Conclusion
Dans ce didacticiel, nous avons découvert la fonction MySQL CONCAT et son utilisation. Cette fonction est généralement très utile lors de l'affichage des résultats de requête pour fusionner des valeurs avec différentes colonnes.
Nous avons également découvert 2 variantes différentes de la fonction CONCAT - une concaténant avec un séparateur utilisant CONCAT_WS et une autre concaténant des valeurs de lignes à l'aide de la fonction MySQL GROUP_CONCAT.
lecture recommandée
- Tutoriel MySQL JOIN: intérieur, extérieur, croix, gauche, droite et soi
- MySQL UNION - Tutoriel complet avec des exemples d'Union
- Format de date MySQL et fonctions d'horodatage avec exemples
- MySQL Insert Into Table - Syntaxe et exemples d'instructions d'insertion
- Didacticiel de déclaration de mise à jour MySQL - Syntaxe de requête de mise à jour et exemples
- Tutoriel MySQL Create View avec des exemples de code
- Tutoriel sur les fonctions / méthodes C # avec des exemples de code