关于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 意思是不设置最大字节数(即设置为最大字节数)