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…]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:
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:
+---------------------------------------------------------------+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 -> EHLOEnfin, 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.