设为首页收藏本站

SQL论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2191|回复: 0

GROUP_CONCAT拼接长度受限

[复制链接]
发表于 2017-2-13 13:39:15 | 显示全部楼层 |阅读模式
本帖最后由 whs 于 2017-2-13 17:05 编辑

        上周五写了一个存储过程来处理业务,发现GROUP_CONCAT函数拼接的长度受限。经查看MYSQL手册发现,GROUP_CONCAT有默认长度设置,可配置GROUP_CONCAT长度单位。
        MySQL提供的group_concat函数可以拼接某个字段值成字符串,如 select group_concat(user_name) from sys_user,默认的分隔符是 逗号,即"," ,如果需要自定义分隔符可以使用 SEPARATOR
如:select group_concat(user_name SEPARATOR '_')  from sys_user

但是如果 user_name  拼接的字符串的长度字节超过1024 则会被截断。

通过命令 "show variables like 'group_concat_max_len' " 来查看group_concat 默认的长度:


mysql> show variables like 'group_concat_max_len';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| group_concat_max_len | 1024 |
+----------------------+-------+
1 row in set

在MySQL配置文件中添加配置:group_concat_max_len = -1  (-1为最大值或根据实际需求设置长度),配置后需要重启MySQL服务,查看如下所示:

mysql> show variables like 'group_concat_max_len';
+----------------------+------------+
| Variable_name | Value |
+----------------------+------------+
| group_concat_max_len | 4294967295 |
+----------------------+------------+
1 row in set

如果是生产环境下,不能擅自重启MySQL服务,则可以通过语句设置group_concat的作用范围,如:

SET GLOBAL group_concat_max_len=-1;
SET SESSION group_concat_max_len=-1;
回复

使用道具 举报

小黑屋|手机版|Archiver|sqlbbs Inc.  

Copyright © 2001-2013 Comsenz Inc.Template by Comsenz Inc.All Rights Reserved.   

Powered by Discuz!X3.3 Licensed( 京ICP备15042794号 )QQ

快速回复 返回顶部 返回列表