关于Mysql中GROUP_CONCAT函数返回值长度的坑

1.GROUP_CONCAT函数: 

  功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。

  语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )

  说明:通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。

2.坑:

  这个函数的返回值的长度默认限制为1024,所以如果期望得到结果的长度大于1024,就会被截断。

  最近项目中碰到了这个坑,终于在排除了一系列原因之后,mysql文档中找到了这个:

  https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html

 

SET GLOBAL group_concat_max_len=102400;

  

看到这里你可以右上角离开这里了。

问题解决。

 

 

然而并没有!

这里还一个坑!

这种方式设置了之后,不重启mysql是没问题的,但是mysql一旦重启就失效了!

我们有Plan B :

修改配置文件:my.ini

在[mysqld]下新增配置:group_concat_max_len = 102400,然后重启mysql使之生效。

另外可以将配置文件给设置为group_concat_max_len=-1  意思是不设置最大字节数(即设置为最大字节数)

 

posted @ 2019-05-05 19:32  周见仁  阅读(532)  评论(0编辑  收藏  举报