`

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

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

 

 

分享到:
评论

相关推荐

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

    `GROUP_CONCAT` 是 MySQL 中一个非常实用的聚合函数,主要用于将来自同一分组的多个值连接成一个字符串。这一功能在许多场景下都非常有用,例如汇总数据、创建列表等。 #### 二、基本语法与用法 `GROUP_CONCAT` 的...

    MySQL GROUP_CONCAT限制解决方案

     GROUP_CONCAT函数可以拼接某个字段值成字符串,默认的分隔符是 逗号,即”,” ,  如果需要自定义分隔符可以使用 SEPARATOR  如: SELECT GROUP_CONCAT(name SEPARATOR '_') FROM user 限制:  GROUP_CONCAT...

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

    总结来说,当在MySQL 5.7中遇到`GROUP_CONCAT`函数数据被截断的问题时,关键在于调整`group_concat_max_len`变量的值。根据需求,可以选择修改配置文件或通过SQL命令临时调整该值。正确设置后,可以确保`GROUP_...

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

    然而,当你处理大量数据时,可能会遇到一个限制,即`GROUP_CONCAT`函数返回的结果被截断,这是因为MySQL对`GROUP_CONCAT`的输出长度有一个默认的限制。 默认情况下,`GROUP_CONCAT`函数最多能返回1024个字节的值。...

    MySQL统计函数GROUP_CONCAT使用陷阱分析

    MySQL中的GROUP_CONCAT函数是一个非常实用的统计函数,它允许我们合并特定列的值,并以指定的分隔符连接它们。然而,在某些情况下,如果不注意,可能会遇到一些使用陷阱,导致数据被截断或者出现警告。本文将深入...

    MySql采用GROUP_CONCAT合并多条数据显示的方法

    在MySQL数据库中,GROUP_CONCAT函数是一个非常实用的聚合函数,用于将同一组中的多个值合并成一个单一的字符串。这个功能在处理关联查询时,尤其是需要在一个查询结果集中显示多行数据组合成一行的情况,显得尤为...

    mysql中GROUP_CONCAT的使用方法实例分析

    GROUP_CONCAT函数在处理多值合并的问题上非常高效,特别是在展示或报告中,你需要将多个相关的值合并为一个字段时。不过需要注意的是,GROUP_CONCAT的结果长度受到max_length_for_sort_data系统变量的限制,超出这个...

    mysql如何将多行数据合并成一行

    请确保在执行 `GROUP_CONCAT` 查询前适当设置此变量,以避免数据被截断。 此外,`GROUP_CONCAT` 函数不支持子查询作为参数,但可以在子查询中使用,然后在外层查询中调用。如果你需要在更复杂的查询中合并多行数据...

    详解mysql中的concat相关函数

    **注意事项**:`GROUP_CONCAT`返回的字符串长度受到系统变量`group_concat_max_len`的限制,超过这个长度会被截断。你可以通过`SET group_concat_max_len = value`来临时调整这个限制。 总结,`CONCAT`、`CONCAT_WS...

    mysql数据表按照某个字段分类输出

    在使用group_concat()时,要注意一个可能的限制,即MySQL默认设置的最大连接长度(group_concat_max_len),当连接字符串超过这个长度时,超出部分的字符串将被截断。可以通过修改MySQL的配置或在SQL语句中动态设置...

    MySQL常用函数大全

    ### MySQL常用函数详解 #### 数学函数 - **ABS(x)**: 返回参数`x`的绝对值。 - **BIN(x)**: 将十进制数字`x`转换为二进制字符串表示。 - **CEILING(x)**: 返回不小于`x`的最小整数值。 - **EXP(x)**: 返回`e`的`x`...

    MySQL常用函数的举例及例子

    ### MySQL常用函数详解 #### 一、数学函数 在MySQL中,数学函数是处理数值数据的基本工具之一。这些函数能够帮助我们执行简单的算术运算、数值转换以及进行数学计算。 - **ABS(x)**:返回`x`的绝对值。例如,`ABS...

    mysql 整理非常好的函数pdf文档

    MySQL的函数主要可以分为数学函数、聚合函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数和格式化函数等几大类。在具体的应用场景中,这些函数可以极大地简化代码和提高开发效率。 ### ...

    mysql常用函数

    ### MySQL常用函数详解 MySQL作为一款广泛使用的开源关系型数据库管理系统,在数据管理方面提供了丰富的功能。其中,函数是实现各种复杂操作的重要工具之一。本文将详细介绍MySQL中的几类常用函数,包括数学函数、...

    MYSQL,SQLSERVER,ORACLE常用的函数

    根据提供的标题和描述,本文将详细介绍在MySQL、SQL Server以及Oracle数据库中常用的函数。这些函数主要分为几大类:字符串处理函数、数值处理函数、日期处理函数、转换函数以及其他一些特殊用途的函数。 ### 字符...

    mysql常用函数.docx

    本文将详细介绍MySQL中的常用函数,分为数学函数、聚合函数、字符串函数和日期与时间函数四大类。 1. 数学函数: - ABS(x):计算并返回x的绝对值。 - BIN(x):将十进制数x转换为二进制字符串。 - CEILING(x):...

Global site tag (gtag.js) - Google Analytics