mysql深坑之--group_concat有长度限制!!!!默认1024
在mysql中,有个函数叫“group_concat”,平常使⽤可能发现不了问题,在处理⼤数据的时候,会发现内容被截取了,
其实MYSQL内部对这个是有设置的,默认不设置的长度是1024,如果我们需要更⼤,就需要⼿⼯去修改配置⽂件。
详细说明如下:
⽤了group_concat后,select⾥如果使⽤了limit是不起作⽤的.
⽤group_concat连接字段的时候是有长度限制的,并不是有多少连多少。但你可以设置⼀下。
使⽤group_concat_max_len系统变量,你可以设置允许的最⼤长度。
程序中进⾏这项操作的语法如下,其中 val 是⼀个⽆符号整数:
SET [SESSION | GLOBAL] group_concat_max_len = val;
若已经设置了最⼤长度,则结果被截⾄这个最⼤长度。
在SQLyog中执⾏ SET GLOBAL group_concat_max_len = 10 后,重新打开SQLyog,设置就会⽣效。
---------------------------------------------------------------
GROUP_CONCAT将某⼀字段的值按指定的字符进⾏累加,系统默认的分隔符是逗号,可以累加的字符长度为1024字节。可以对这些参数进⾏修改。
1.先举⼀个简单的例⼦
select group_concat(f_a) from t_one group by f_b;
按f_b进⾏分组查询,将每组中的f_a进⾏累加。
2.修改默认的分隔符
select group_concat(f_a  separator  '_') from t_one group by f_b;
separator  是⼀个关键字,后⾯跟着要进⾏分隔的字符
3.排序
select group_concat(f_a order by f_a  separator  '_') from t_one group by f_b;
4.修改默认字符⼤⼩
1).在MySQL配置⽂件中加上
mysql group by order bygroup_concat_max_len = 102400 #你要的最⼤长度
2).可以简单⼀点,执⾏语句,可以设置作⽤范围
SET GLOBAL group_concat_max_len=102400;
SET SESSION group_concat_max_len=102400;
5.和concat使⽤
group_concat默认返回的是BLOB⼤对象,可以使⽤concat,返回字符串,还可以在返回的内容,在加⼊其它的数据。