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

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

详细说明如下:

  • 用了group_concat后,select里如果使用了limit是不起作用的.
  • 用group_concat连接字段的时候是有长度限制的,并不是有多少连多少。但你可以设置一下。
  • 使用group_concat_max_len系统变量,你可以设置允许的最大长度。
  • 系统默认的分隔符是逗号

修改方式:

SET [SESSION | GLOBAL] group_concat_max_len = 10240;

可修改的参数如下

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配置文件中加上

group_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,返回字符串,还可以在返回的内容,在加入其它的数据。

总结

以上所述是小编给大家介绍的如何修改Mysql中group_concat的长度限制,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

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

    前天在生产环境中遇到一个问题:使用 GROUP_CONCAT 函数select出来的数据被截断了,最长长度不超过1024字节,开始还以为是navicat客户端自身对字段长度做了限制的问题.后面故意重新INSERT了一个字段长度超1024字节的数据,但是navicat能完整展示出来,所以就排除了navicat的问题. 然后想到1024这个熟悉的数字,会不会是C++框架在接收MySQL通过socket传输过来的数据时被处理了呢?于是手工在日志中打印这个字段,发现即使数据长度超过1024字节仍然是可以

  • mysql group_concat 实现把分组字段写成一行的方法示例

    本文实例讲述了mysql group_concat 实现把分组字段写成一行的方法.分享给大家供大家参考,具体如下: 功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果. 函数语法: group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator '分隔符'] ) 示例 查询文章列表,将同一文章多个标签作为一个字段 标签表结构 CREATE TABLE `book_tag` ( `id` int(10)

  • 浅谈MySQL中group_concat()函数的排序方法

    group_concat()函数的参数是可以直接使用order by排序的.666.. 下面通过例子来说明,首先看下面的t1表. 比如,我们要查看每个人的多个分数,将该人对应的多个分数显示在一起,分数要从高到底排序. 可以这样写: SELECT username,GROUP_CONCAT(score ORDER BY score DESC) AS myScore FROM t1 GROUP BY username; 效果如下: 以上这篇浅谈MySQL中group_concat()函数的排序方法就

  • Mysql的GROUP_CONCAT()函数使用方法

    语法: GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_integer | col_name | expr}[ASC | DESC] [,col_name ...]][SEPARATOR str_val]) 下面演示一下这个函数,先建立一个学生选课表student_courses,并填充一些测试数据. SQL代码 复制代码 代码如下: CREATE TABLE student_courses (          stude

  • MySQL中group_concat函数深入理解

    本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) . MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 基本查询 mysql> select * from aa; +------+------+ | id| name | +------+------+ |1 |

  • mysql的group_concat函数使用示例

    MySQL中group_concat函数,完整的语法如下: 复制代码 代码如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) 基本查询 复制代码 代码如下: select * from aa; 复制代码 代码如下: +------+------+| id| name |+------+------+|1 | 10||1 | 20||1 | 20||2 | 20||3 | 200 ||3 |

  • mysql group_concat()函数用法总结

    本文实例讲述了mysql group_concat()函数用法.分享给大家供大家参考,具体如下: group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果.比较抽象,难以理解. 通俗点理解,其实是这样的:group_concat()会计算哪些行属于同一组,将属于同一组的列显示出来.要返回哪些列,由函数参数(就是字段名)决定.分组必须有个标准,就是根据group by指定的列进行分组. group_concat函数应该是在内部执行了group by语句,这

  • mysql利用group_concat()合并多行数据到一行

    假设两个表a,b,b中通过字段id与a表关联,a表与b表为一对多的关系.假设b表中存在一字段name,现需要查询a表中的记录,同时获取存储在b表中的name信息,按照常规查询,b表中有多少记录,则会显示多少行,如果需要只显示a表记录行数,则需要把查询name字段得到的多行记录进行合并,可以通过程序实现,但也可直接在sql层完成. 方法: 利用group_concat()方法,参数为需要合并的字段,合并的字段分隔符默认为逗号,可通过参数separator指定,该方法往往配合group by 一起使

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

    本文实例讲述了MySql采用GROUP_CONCAT合并多条数据显示的方法,分享给大家供大家参考.具体实现方法如下: 假设有这样一个需求: 1:班级表: id class_name 2:学生表: id name class_id   如果我们要查所有的班级以及每个班级下的学生,你一定会想到这样写法: 复制代码 代码如下: SELECT banji.*, user.name FROM `banji` left join user on banji.id=user.`class` where ban

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

    本文实例分析了MySQL统计函数GROUP_CONCAT使用中的陷阱.分享给大家供大家参考,具体如下: 最近在用MySQL做一些数据的预处理,经常会用到group_concat函数,比如类似下面一条语句 复制代码 代码如下: mysql>select aid,group_concat(bid) from tbl group by aid limit 1; sql语句比较简单,按照aid分组,并且把相应的bid用逗号串起来.这样的句子大家可能都用过,也可能不会出问题,但是如果bid非常多的话,你就

随机推荐