GROUP_CONCAT separador de vírgulas - MySQL

145

Tenho uma consulta em que estou usando GROUP_CONCATe um separador personalizado, pois meus resultados podem conter vírgulas: '----'

Isso tudo funciona bem, no entanto, ainda é separado por vírgula, então minha saída é:

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

Como posso fazer isso para que a saída seja:

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

Eu pensei que essa era a idéia de um separador personalizado!

Caso contrário, você pode escapar de vírgulas em seus resultados, para que eu possa explodir em PHP pelas GROUP_CONCATvírgulas?

user984580
fonte
De onde vêm as vírgulas? Eles são os separadores ou parte dos resultados? Essa parte da pergunta não está clara para mim.
Matt Fenwick
1
GROUP_CONCAT (artists.artistname, '----') é a minha linha de concatenação de grupo - como você pode ver, não coloquei vírgula como separador - eles não aparecem nos resultados, mas são exibidos na saída
user984580

Respostas:

352

Parece que você está perdendo a palavra-chave SEPARATOR na função GROUP_CONCAT .

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

Do jeito que você escreveu, você está concatenando artists.artistnamecom a '----'string usando o separador de vírgula padrão.

Joe Stefanelli
fonte
17

Consulta para atingir sua exigência

SELECT id,GROUP_CONCAT(text SEPARATOR ' ') AS text FROM table_name group by id;
Vallabh Bothre
fonte
O requisito era usar ----como separador.
precisa saber é o seguinte
1

Ou, se você estiver fazendo uma divisão - participe:

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

Você pode querer incluir WITHIN RECORD, assim:

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

da página da API do BigQuery

romano
fonte