MySQL Group Concat for Strings

MySQL Group Concat for Strings

La fonction du groupe _concat est une fonction de groupe par agrégat qui vous permet de concaténer les valeurs de colonne de plusieurs lignes en un seul champ. Il renvoie une chaîne si le groupe set contient une valeur de colonne ou non nulle et renvoie une valeur nul si aucune ne peut être trouvée.

Ce tutoriel vous apprendra à utiliser la fonction MySQL Group_Concat () pour combiner les chaînes d'un groupe avec plusieurs options.

Utilisation de base

Comme nous l'avons mentionné, cette fonction renvoie un résultat de chaîne avec les valeurs des valeurs non nulles concaténées ou un null si aucun n'existe.

La syntaxe générale est:

Groupe_concat ([distinct] expr [, expr…]
[Ordre par unsigned_integer | Col_name | expr
[ASC | Desc] [, col_name…]]
[Séparateur str_val])

Explication

À partir de la syntaxe ci-dessus, vous pouvez voir que la fonction group_concat utilise des clauses et des contraintes mysql pour spécifier les différentes options:

  1. DISTINCT: La clause distincte aide à supprimer les valeurs en double dans le groupe de set bef0re le processus de concaténation. Considérez notre tutoriel expliquant MySQL distinct pour comprendre comment cela fonctionne.
  2. COMMANDÉ PAR: La clause suivante est l'ordre par qui aide à trier les valeurs dans un ordre spécifié. La commande peut être ascendante ou descendante. Si aucune commande n'est spécifiée, MySQL formate les valeurs dans l'ordre croissant.
  3. SÉPARATEUR: Cette clause définit la chaîne littérale insérée entre les valeurs du groupe sur le processus de concaténation. Par défaut, MySQL utilise une virgule (,) pour séparer les valeurs.

NOTE: Le résultat de la chaîne généré par la fonction MySQL Group_Concat () est limité à une longueur La valeur définie dans la variable Group_Concat_Max_Len. Cette valeur est définie dans le système et a une valeur par défaut de 1024. Vous pouvez modifier cette valeur à l'échelle mondiale ou la définir dans la session dont vous avez besoin.

Définir [global | Session] groupe_concat_max_len = valeur;

Considérez la référence ci-dessous pour en savoir plus:

https: // dev.mysql.com / doc / Refman / 8.0 / en / serveur-système-variables.html # sysvar_group_concat_max_len

Comment ça marche: exemple

Permettez-moi d'utiliser un exemple simple pour expliquer comment fonctionne la fonction group_concat (). Considérez la table avec un champ pour Char comme:

Créer un tableau Concat (valeur char);

Insertons les valeurs dans le tableau comme indiqué dans la requête ci-dessous:

Insérer dans les valeurs concat (valeur) ('h'), ('e'), ('l' '), (' l ''), ('o');

Si nous effectuons une opération Group_Concat de base sur les valeurs du tableau, nous obtiendrons un résultat de chaîne comme indiqué ci-dessous:

SELECT GROUP_CONCAT (Distinct Value Order by Value ASC Séparateur "") From Concat;

La valeur résultante est:

+---------------------------------------------------------------+
| GROUP_CONCAT (Séparateur de valeur de valeur distincte par valeur ASC "") |
+---------------------------------------------------------------+
| E h l o |
+---------------------------------------------------------------+
1 ligne en jeu (0.01 SEC)

Voulez-vous un autre moyen de comprendre ce qui est arrivé au résultat donné ci-dessus?

Nous commençons par supprimer toutes les valeurs en double en raison de la clause distincte MySQL qui supprime un L.

Ensuite, nous procédons à l'ordre par ordre croissant tel que défini dans (ASC), qui modifie la chaîne sous la forme de

HELO -> EHLO

Enfin, nous effectuons le processus de concaténation en utilisant un espace comme séparateur pour les valeurs définies, résultant en la chaîne e h l o de h, e, l, l o.

Exemple de cas d'utilisation

Prenons une vraie base de données et utilisons pour illustrer comment nous pouvons implémenter la fonction Group_Concat (). Dans cet exemple, nous utiliserons la base de données Sakila, et spécifiquement, la table d'adresses de la base de données Sakila.

Considérez la ressource ci-dessous pour télécharger la base de données pour vos exemples:

https: // dev.mysql.com / doc / index-autre.html

Dans le tableau des adresses de la base de données Sakila, vous obtiendrez la colonne du district. Nous pouvons faire séparer tous les quartiers uniques par un tuyau comme indiqué dans la requête ci-dessous:

SELECT GROUP_CONCAT (District Order by District Séparateur "|") de Sakila.Limite d'adresse 5;

La requête ci-dessus affichera tous les districts distincts et les commandera dans l'ordre croissant séparé par un tuyau.

NOTE: La fonction group_concat () est une fonction agrégée. Par conséquent, il est nécessaire que vous spécifiiez l'instruction Order By dans la fonction et non dans l'instruction SELECT.

Conclusion

La fonction mysql groupe_concat () discutée dans ce tutoriel est une fonction utile qui vous permet de créer des données uniques, triées et organisées à partir d'un tableau qui peut contenir des doublons et des données non ordonnées.

Considérez les documents ou nos autres tutoriels MySQL pour en savoir plus.