[转]mysql GROUP_CONCAT函数被截断的问题

转:http://blog.csdn.net/wangyonglin1123/article/details/51744834

MySQL的 group_concat 函数默认返回1024个字节长度,超过长度的会被截断。最近程序中就遇到这个问题了。

通过如下命令可以查看到当前mysql系统的参数:

mysql> show variables like "%concat%"; 
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| group_concat_max_len | 1024  |
+----------------------+-------+
1 row in set (0.00 sec)

2. 有两个方法可以设置group_concat_max_len的值

(1) 在 /etc/my.cnf 中的[mysqld]加上group_concat_max_len = 1024000,需要重启mysql才能生效

(2) 在命令行下输入:

      SET GLOBAL group_concat_max_len=1024000;
或者  SET SESSION group_concat_max_len=1024000;

GLOBAL 是对全局生效的,而SESSION是对当前会话有效。需要有管理员权限才可以操作GLOBAL哦!!!

 

1024指的是字节哦

 

如下面两条sql:

SELECT sales_no bizNo,b.merchandise_no 
FROM vip_sales.sales a,vip_sales.merchandise b,vip_sales.sales_merchandise_rel c
WHERE a.id=c.sales_id 
AND b.id=c.m_id 
AND a.is_deleted=0
AND b.is_deleted=0
AND c.is_deleted=0
AND a.sales_no=2016056141

SELECT sales_no bizNo
,GROUP_CONCAT(merchandise_no ORDER BY merchandise_no ASC SEPARATOR ',') AS merchandise_no 
FROM vip_sales.sales a,vip_sales.merchandise b,vip_sales.sales_merchandise_rel c
WHERE a.id=c.sales_id 
AND b.id=c.m_id 
AND a.is_deleted=0
AND b.is_deleted=0
AND c.is_deleted=0
AND a.sales_no=2016056141

第一条sql查出有355行,第二条sql查出结果后,通过“,”分隔出来,只有114行。

这种做法是一种坑,莫踩!!

猜你喜欢

转载自breezylee.iteye.com/blog/2345318