mysql group_concat не приносит все данные - PullRequest
16 голосов
/ 05 апреля 2011

Я использую следующий запрос и использую функцию group_concat.Однако иногда данные в столбце answers обрезаются;это означает, что я не получаю полные данные, в конце концов они просто отсекаются.

Я подозреваю, что это может иметь какое-то отношение к типу данных .... может ли оно быть преобразовано в больший тип данных?В настоящее время тип данных Other1 равен text

 select SiteName, 
case 
when group_concat(Other1) is not null 
  then  group_concat( cast(Other1 AS BLOB)) 
when group_concat(Other1) is null
  then  'No Response provided'
end
 'answers'
from disparities_community_partnerships
where QuarterId=2
group by SiteName

Ответы [ 3 ]

28 голосов
/ 05 апреля 2011

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

Результат усекается до максимальной длины, заданной системной переменной group_concat_max_len, которая имеет значение по умолчанию 1024. Значение может быть установлено выше, хотя эффективная максимальная длина возвращаемого значения ограничена значением max_allowed_packet. Синтаксис для изменения значения group_concat_max_len во время выполнения выглядит следующим образом, где val - целое число без знака

SET [GLOBAL | SESSION] group_concat_max_len = val;
5 голосов
/ 13 августа 2014

Еще один пример Выполнить так

SET GLOBAL  group_concat_max_len = 5555555;
 select SiteName, 
case 
when group_concat(Other1) is not null 
  then  group_concat( cast(Other1 AS BLOB)) 
when group_concat(Other1) is null
  then  'No Response provided'
end
 'answers'
from disparities_community_partnerships
where QuarterId=2
group by SiteName
0 голосов
/ 16 января 2018

Установите group_concat_max_len перед вашим запросом:

SET GLOBAL  group_concat_max_len = 9999999;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...