Séparateur virgule GROUP_CONCAT - MySQL

145

J'ai une requête où j'utilise GROUP_CONCATet un séparateur personnalisé car mes résultats peuvent contenir des virgules: '----'

Tout cela fonctionne bien, mais il est toujours séparé par des virgules, donc ma sortie est:

Result A----,Result B----,Result C----

Comment puis-je faire en sorte que le résultat soit:

Result A----Result B----Result C----

Je pensais que c'était l'idée d'un séparateur personnalisé!

A défaut, pouvez-vous échapper des virgules dans vos résultats, pour que je puisse exploser en PHP par les GROUP_CONCATvirgules?

user984580
la source
D'où viennent les virgules? Sont-ils les séparateurs ou font-ils partie des résultats? Cette partie de la question n'est pas claire pour moi.
Matt Fenwick
1
GROUP_CONCAT (Artists.artistname, '----') est la ligne de mon groupe concat - comme vous pouvez le voir, je n'ai pas mis de virgule comme séparateur - ils ne sont pas dans les résultats mais affichés dans la sortie
user984580

Réponses:

352

Il semble que vous ayez manqué le mot clé SEPARATOR dans la fonction GROUP_CONCAT .

GROUP_CONCAT(artists.artistname SEPARATOR '----')

La façon dont vous l'avez écrit, vous concaténez artists.artistnameavec la '----'chaîne en utilisant le séparateur virgule par défaut.

Joe Stefanelli
la source
17

Requête pour atteindre votre exigence

SELECT id,GROUP_CONCAT(text SEPARATOR ' ') AS text FROM table_name group by id;
Vallabh Bothre
la source
L'exigence était d'utiliser ----comme séparateur.
ks1322
1

Ou, si vous faites une scission - jointure:

GROUP_CONCAT(split(thing, " "), '----') AS thing_name,

Vous voudrez peut-être inclure WITHIN RECORD, comme ceci:

GROUP_CONCAT(split(thing, " "), '----') WITHIN RECORD AS thing_name,

depuis la page de l'API BigQuery

romain
la source