Limit characters in mysql query column

2019-07-10 07:27发布

i have a problem with a query

SELECT usuarios.UsuarioId, usuarios.UsuarioNombre, 
usuarios.UsuarioFechaRegistro, usuarios.UsuarioFecha, 
usuarios.UsuarioCompartir, usuarios.UsuarioPrivacidad, 
usuarios.UsuarioAvatar, usuarios.PlataformaDefecto, 
GROUP_CONCAT( DISTINCT usuarios_plataformas.PlataformaId) as Plataformas, 
CONCAT('[', GROUP_CONCAT( 
DISTINCT CASE WHEN follows.UsuariosSiguiendo = usuarios.UsuarioId 
THEN (SELECT CONCAT('{"UsuarioNombre":"', usuarios.UsuarioNombre, '", "UsuarioId":"', usuarios.UsuarioId, '"}') 
FROM usuarios 
WHERE UsuarioId = follows.UsuariosSeguido) END), ']') as Siguiendo, 
CONCAT('[', GROUP_CONCAT( 
DISTINCT CASE WHEN follows.UsuariosSeguido = usuarios.UsuarioId 
THEN (SELECT CONCAT('{"UsuarioNombre":"', usuarios.UsuarioNombre, '", "UsuarioId":"', usuarios.UsuarioId, '"}') 
FROM usuarios 
WHERE UsuarioId = follows.UsuariosSiguiendo) END), ']') as Seguido 
FROM (`usuarios`) 
LEFT JOIN `usuarios_plataformas` ON `usuarios_plataformas`.`UsuarioId` = `usuarios`.`UsuarioId` 
LEFT JOIN `follows` ON `follows`.`UsuariosSiguiendo` = `usuarios`.`UsuarioId` 
OR follows.UsuariosSeguido = usuarios.UsuarioId 
WHERE `UsuarioNombre` = '50l3r' 
GROUP BY `usuarios`.`UsuarioId`

Query returns me this result: http://gyazo.com/92687af3657239bd7c069ed165c5253c

In my query, i formated results as json. But in "Siguiendo","Seguido" columns, results split for a limit characters.

muchs thanks for your help

1条回答
姐就是有狂的资本
2楼-- · 2019-07-10 07:59

That's because you're using GROUP_CONCAT() and it has restriction for string length, which is formed by it. This is group_concat_max_len - so you should adjust it to fit your task. - but be aware that it can't overcome max unsigned longint in any case (that's 4294967295 for 32-bit systems and 18446744073709547520 for 64-bit systems)

You can dynamically change limit via

SET [GLOBAL | SESSION] group_concat_max_len = val;

However, there's another more common max_allowed_packet restriction. It restricts the maximum size of one packet or any generated/intermediate string, so it should fit your issue too.

查看更多
登录 后发表回答