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

145

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

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

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

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

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

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

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

user984580
источник
Откуда идут запятые? Являются ли они разделителями или частью результатов? Эта часть вопроса мне не ясна.
Мэтт Фенвик
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

Римский
источник