`

[转]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行。

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

 

 

分享到:
评论

相关推荐

    MySQL GROUP_CONCAT限制解决方案

     GROUP_CONCAT 拼接的字符串的长度字节默认长度1024个字节,超过则会被截断。 查询默认长度:  命令 SHOW VARIABLES LIKE 'group_concat_max_len' 操作方法:(如图) 调整长度设置方法: (1)在MySQL配置文件中...

    【GROUP_CONCAT】使用之MySQL官方文档翻译

    【GROUP_CONCAT】使用之MySQL官方文档翻译

    oracle 创建wm_concat函数

    wm_concat函数在oracle 10G以下版本是没有的,这个就需要我们自己来创建,有需要的就下载下来,直接运行就行了,如果在运行中出中,请分开运行,不要一次性运行哟

    wmsys_wm_concat函数结果拆解

    wmsys_wm_concat函数结果拆解/wmsys_wm_concat函数结果拆解/wmsys_wm_concat函数结果拆解/wmsys_wm_concat函数结果拆解/

    MySQL中group_concat函数深入理解

    本文通过实例介绍了MySQL中的group_concat函数的使用方法,需要的朋友可以适当参考下

    mysql group_concat()函数用法总结

    本文实例讲述了mysql group_concat()函数用法。分享给大家供大家参考,具体如下: group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果。比较抽象,难以理解。 通俗点理解,其实是...

    如何修改Mysql中group_concat的长度限制

    在mysql中,有个函数叫“group_concat”,平常使用可能发现不了问题,在处理大数据的时候,会发现内容被截取了,其实MYSQL内部对这个是有设置的,默认不设置的长度是1024,如果我们需要更大,就需要手工去修改 ...

    wm_concat函数DDL.zip

    Oracle 11g之后取消了wm_concat函数,12C及以后版本需要使用的话,需要自定义新建这个函数,提供DDL给需要用到的兄弟们。

    oracle 9i 实现wm_concat函数

    oracle 9i 实现wm_concat函数 进行一列多行合并,之间使用,分割

    重建WMSYS用户的WMSYS.WM_CONCAT函数的3个文件

    重建WMSYS用户的WMSYS.WM_CONCAT函数的3个文件重建WMSYS用户的WMSYS.WM_CONCAT函数的3个文件

    Oracle重建WMSYS用户及WMSYS.WM_CONCAT函数

    解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 在sqlplus中执行包里的owmctab.plb、owmaggrs.plb、owmaggrb.plb三个脚本即可。 简单来说,用PL/SQL执行下一下几个脚本就可以了。 特别要注意:PL/SQL登录时,要...

    Oracle没有WM_CONCAT函数的解决办法.rar

    1、下载三个文件:owmctab.plb 、 owmaggrs.plb 、 owmaggrb.plb 2、用sqlplus登录:sqlplus -logon sys/123 as sysdba 3、执行@C:\Users\JOYTRAVEL\Desktop\WMSYS用户\owmaggrb.plb; 如果执行结果报错,说找不...

    12C开始_wm_concat函数.sql

    Oracle从12C版本开始,不支持wm_concat函数,我们可以采取的办法有使用listagg函数代替wm_concat函数,或者为了减小修改程序的工作量,可以通过手工创建wm_concat函数来解决这个问题。

    mysql的group_concat函数使用示例

    MySQL中group_concat函数,完整的语法如下: 代码如下:group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符’]) 基本查询 代码如下:select * from aa; 代码如下:+——+——+|...

    类似于wmsys.wm_concat的自定义函数clob版

    大家用oracle数据库里面的wmsys.wm_concat函数有没有遇见过字符串缓冲区太小的情况? 针对这种情况我写了个自定义聚合函数 是clob版的。

    Oracle新版中不支持 WM_CONCAT的处理方法

    Oracle新版中不支持 WM_CONCAT的处理方法,直接创建一个自定义函数代替

    Mysql5.7中使用group concat函数数据被截断的问题完美解决方法

    前几天在项目中遇到一个问题,使用 GROUP_CONCAT 函数select出来的数据被截断了,最长长度不超过1024字节,开始还以为是navicat客户端自身对字段长度做了限制的问题。后来查找出原因,解决方法大家跟随脚本之家小编...

Global site tag (gtag.js) - Google Analytics