J'utilise GROUP_CONCAT()
dans une requête MySQL pour convertir plusieurs lignes en une seule chaîne. Cependant, la longueur maximale du résultat de cette fonction est de 1024
caractères.
Je suis très conscient que je peux changer le paramètre group_concat_max_len
pour augmenter cette limite:
SET SESSION group_concat_max_len = 1000000;
Cependant, sur le serveur que j'utilise, je ne peux changer aucun paramètre. Pas en utilisant la requête précédente et en ne modifiant aucun fichier de configuration.
Ma question est donc la suivante: existe-t-il un autre moyen d'obtenir la sortie d'une requête à plusieurs lignes dans une seule chaîne?
mysql
group-concat
ZeWaren
la source
la source
SET
instruction pour modifier une variable de session?Réponses:
est un paramètre temporaire de portée de session. Cela ne s'applique qu'à la session en cours. Vous devez l'utiliser comme ceci.
Vous pouvez le faire même en partageant l'hébergement, mais lorsque vous utilisez une autre session, vous devez répéter la
SET SESSION
commande.la source
SET GLOBAL group_concat_max_len=6999
pour rendre le paramètre valide pour toutes les requêtesLe paramètre correct pour définir la longueur maximale est:
value_numeric
doit être> 1024; par défaut, lagroup_concat_max_len
valeur est 1024.la source
group_concat_max_len
aussi bas que 4 . ( documentation mysql ). "value_numeric
doit être> = 4" est le cas ici. J'ai effectivement utilisé cela pour tester ce qui se passe lorsque vous dépassez lagroup_concat_max_len
valeur.SET
requête n'affectera les paramètres après un redémarrage.Incluez ce paramètre dans le fichier de configuration xampp my.ini:
Redémarrez ensuite xampp mysql
la source
Vous pouvez essayer ceci
la source
La syntaxe correcte est mysql>
SET @@global.group_concat_max_len = integer;
Si vous n'avez pas les privilèges pour le faire sur le serveur où réside votre base de données, utilisez une requête comme:
mySQL =
"SET @@session.group_concat_max_len = 10000;"
ou une valeur différente.Ligne suivante:
SET objRS = objConn.Execute(mySQL)
vos variables peuvent être différentes.puis
mySQL="SELECT GROUP_CONCAT(......);"
etcj'utilise la dernière version car je n'ai pas les privilèges pour changer la valeur par défaut de 1024 globalement (en utilisant cPanel).
J'espère que cela t'aides.
la source
Cette requête est un peu étrange mais elle n'a pas besoin d'une autre requête pour initialiser la variable; et il peut être intégré dans une requête plus complexe. Il retourne tous les «champs2 séparés par un point-virgule.
la source