Maison  >  Article  >  base de données  >  Explication détaillée des exemples d'utilisation de la fonction group_concat() dans MySQL

Explication détaillée des exemples d'utilisation de la fonction group_concat() dans MySQL

零下一度
零下一度original
2017-07-03 09:30:481204parcourir

J'ai récemment rencontré un problème au travail :

Certains traitements logiques de notre système sont mis en œuvre à l'aide de procédures stockées, mais un jour, le service client a signalé que la commande n'avait pas pu être passée. impliqué dans la commande Ressources de base, pas de problème.

Il y a deux lignes de code dans la procédure stockée de passation de commande :

1   declare _err int default 0;2   DECLARE CONTINUE HANDLER FOR SQLEXCEPTION,SQLWARNING,NOT FOUND set _err=1;3   DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' set _err=2;

Après avoir exécuté la procédure stockée, la variable _err renverra 1. Vous ne peut déboguer la procédure stockée que pour trouver le problème. Lors du débogage du paragraphe suivant, j'ai découvert qu'après l'exécution de ce SQL, _err est devenu 1

1 select group_concat(concat(@room_name,',',run_date,',',total_count) separator '|') into @order_desc from tmp_order_detail order by run_date;

en raison des données dans la table temporaire tmp_order_detail Il y avait un bon nombre, donc j'ai deviné que c'était un problème avec group_concat, j'ai donc réduit de moitié les données dans la table temporaire et j'ai constaté que cela avait réussi, alors j'ai deviné si group_concat avait une limite de longueur, je l'ai recherché sur Google, et bien sûr. .

À propos de la fonction group_concat :

group_concat : La longueur connectable par défaut est de 1024 si la longueur maximale a été définie, le dépassement de cette longueur sera Tronqué à cette longueur

Après avoir utilisé group_concat dans l'instruction de requête (select), la limite deviendra invalide

Solution :

1, Modifier le fichier de configuration MySQL :

#需要设置的长度
group_concat_max_len = 5120

2. Vous pouvez également utiliser les paramètres de l'instruction SQL :

SET GLOBAL group_concat_max_len=5120;SET SESSION group_concat_max_len=5120;
J'ai utilisé la deuxième méthode ci-dessus dans la procédure stockée pour exécuter la procédure stockée, OK, succès !

Hors travail (aujourd'hui c'est dimanche) ! ! !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Comment utiliser JDBC natif ?Article suivant:Comment utiliser JDBC natif ?