Разделитель-запятая GROUP_CONCAT - MySQL


145

У меня есть запрос, где я использую GROUP_CONCATи пользовательский разделитель, так как мои результаты могут содержать запятые: '----'

Это все работает хорошо, но все равно разделено запятыми, поэтому мой вывод:

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

Как я могу сделать так, чтобы результат был:

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

Я думал, что это была идея пользовательского разделителя!

В противном случае, вы можете избежать запятых в ваших результатах, чтобы я мог взорваться в PHP GROUP_CONCATзапятыми?


Откуда идут запятые? Являются ли они разделителями или частью результатов? Эта часть вопроса мне не ясна.
Мэтт Фенвик

1
GROUP_CONCAT (artist.artistname, '----') - это строка конкатета моей группы - как видите, я не ставил запятую в качестве разделителя - они не в результатах, а отображаются в выводе
user984580

Ответы:


352

Похоже, вам не хватает ключевого слова SEPARATOR в функции GROUP_CONCAT .

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

То, как вы это написали, вы соединяете artists.artistnameсо '----'строкой, используя запятую по умолчанию.


17

Запрос для достижения вашего требования

SELECT id,GROUP_CONCAT(text SEPARATOR ' ') AS text FROM table_name group by id;

Требование было использовать ----в качестве разделителя.
ks1322

1

Или, если вы делаете разделение - присоединяйтесь:

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

Вы можете включить WITHIN RECORD, как это:

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

со страницы BigQuery API

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.