在mysql查询列中限制字符 [英] Limit characters in mysql query column

查看:184
本文介绍了在mysql查询列中限制字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个查询的问题

选择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_pa​​cket 限制。它限制一个数据包或任何生成的/中间字符串的最大大小,所以它也应该适合你的问题。

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆