2011-04-05 22 views
14

Estoy usando la siguiente consulta y estoy utilizando la función group_concat. Sin embargo, a veces los datos en la columna answers se cortan; lo que significa que no obtengo toda la información, al final solo se corta.mysql group_concat no trae datos completos

Sospecho que podría tener algo que ver con el tipo de datos .... ¿se puede convertir a un tipo de datos más grande? Actualmente, el tipo de datos es Other1text

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 

Respuesta

25

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

El resultado se trunca a la longitud máxima que se da por la variable de sistema group_concat_max_len, que tiene un valor predeterminado de 1024. El valor se puede ajustar más alto, aunque la longitud máxima efectiva del valor de retorno está restringida por el valor de max_allowed_packet. La sintaxis para cambiar el valor de group_concat_max_len en tiempo de ejecución es el siguiente, donde val es un entero sin signo

SET [GLOBAL | SESSION] group_concat_max_len = val; 
4

una muestra más Ejemplo Ejecutar como este

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

Ajuste el group_concat_max_len antes de su búsqueda :

SET GLOBAL group_concat_max_len = 9999999;