zoukankan      html  css  js  c++  java
  • 关于Mysql中GROUP_CONCAT函数返回值长度的坑

    1.GROUP_CONCAT函数: 

      功能:将group by产生的同一个分组中的值连接起来,返回一个字符串结果。

      语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )

      说明:通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。

    2.坑:

      这个函数的返回值的长度默认限制为1024,所以如果期望得到结果的长度大于1024,就会被截断。

      最近项目中碰到了这个坑,终于在排除了一系列原因之后,mysql文档中找到了这个:

      https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html

    SET GLOBAL group_concat_max_len=102400;
    

      

    看到这里你可以右上角离开这里了。

    问题解决。

    然而并没有!

    这里还一个坑!

    这种方式设置了之后,不重启mysql是没问题的,但是mysql一旦重启就失效了!

    我们有Plan B :

    修改配置文件:my.ini

    在[mysqld]下新增配置:group_concat_max_len = 102400,然后重启mysql使之生效。

    另外可以将配置文件给设置为group_concat_max_len=-1  意思是不设置最大字节数(即设置为最大字节数)

  • 相关阅读:
    C++中迭代器失效的问题
    怎么转载别人的博客
    Linux下模拟实现shell
    Linux下的文件描述符与文件指针及其区别
    智能指针
    C++模板(下)
    C++中的模板(上)
    僵尸进程和孤儿进程
    Linux下的atexit函数
    多线程练习
  • 原文地址:https://www.cnblogs.com/longlongogo/p/10815723.html
Copyright © 2011-2022 走看看