在mysql查询列中限制字符 [英] Limit characters in mysql query column
问题描述
我有一个查询的问题
选择usuarios.UsuarioId,usuarios.UsuarioNombre,usuarios.UsuarioFechaRegistro,usuarios.UsuarioFecha,usuarios.UsuarioCompartir,usuarios.UsuarioPrivacidad, usUarios.UuarioAvatar,usuarios.PlataformaDefecto,GROUP_CONCAT(DISTINCT usuarios_plataformas.PlataformaId)as Plataformas,CONCAT('[',GROUP_CONCAT(DISTINCT CASE WHEN follows.UsuariosSiguiendo = usuarios.UsuarioId THEN(SELECT CONCAT(' ('[',GROUP_CONCAT(')')作为Siguiendo,CONCAT('[',GROUP_CONCAT(')')的用法是使用UUuario.UuarioNombre,',UsuarioId:',usuarios.UsuarioId, DISTINCT CASE WHEN following.UsuariosSeguido = usuarios.UsuarioId THEN(SELECT CONCAT('USUARYNombre:'usuarios.UsuarioNombre,',UsuarioId:',usuarios.UsuarioId,'})FROM usuarios WHERE ( usuarios
)LEFT JOIN usuarios_plataformas
ON usuarios_plataformas
。 UsuarioId
= usuarios
。 UsuarioId
LEFT JOIN 之后
之后之后。 UsuariosSiguiendo
= usuarios 。
UsuarioId
OR follow.UsuariosSeguido = usuarios.UsuarioId WHERE UsuarioNombre
='50l3r'GROUP BY usuarios
。 UsuarioId
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
查询会返回此结果: http://gyazo.com/92687af3657239bd7c069ed165c5253c
在我的查询中,我将结果形成为json。
In my query, i formated results as json. But in "Siguiendo","Seguido" columns, results split for a limit characters.
非常感谢您的帮助
推荐答案
这是因为您使用 GROUP_CONCAT(),它对字符串长度有限制,它由它形成。这是 group_concat_max_len - 因此您应该调整它以适合您的任务。 - 但是请注意,在任何情况下它都不能克服max unsigned longint( 4294967295 for
32位
系统和 18446744073709547520
64位
系统)
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)
可以通过
SET [GLOBAL | SESSION] group_concat_max_len = val;
但是,还有一个更常见的 max_allowed_packet 限制。它限制一个数据包或任何生成的/中间字符串的最大大小,所以它也应该适合你的问题。
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.
这篇关于在mysql查询列中限制字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!