group_concat存在的坑

1、group_concat()有長度限制1024, 需要修改配置group_concat_max_len,如果超過大小會被截斷;

2、group_concat()可以對這個組的值來進行排序再連接成字符串,

eg:GROUP_CONCAT(name ORDER BY id DESC) 

3、group_concat()改變分隔符:

GROUP_CONCAT(name SEPARATOR '|||')

4、當你用group_concat的時候請注意,連接起來的字段如果是int型,一定要轉換成char再拼起來,
否則在你執行後(ExecuteScalar或者其它任何執行SQL返回結果的方法)返回的將不是一個逗號隔開的串,
而是byte[]。

GROUP_CONCAT函數用於將多個字符串連接成一個字符串,在拼接成字符串時就會存在拼接長度的問題,mysql 默認的拼接最大長度爲1024 個字節,由於1024個字節會出現不夠用的情況,所以有時需要去根據情況進行修改,方式如下。

1、查看當前mysql group_concat_max_len

進入mysql狀態,輸入:show variables like 'group_concat_max_len';

如果未曾修改會得到下面結果

2、修改mysql group_concat_max_len

a)、如果不方便重啓mysql 可以在mysql狀態通過命令設置,如:

 
  1. SET GLOBAL group_concat_max_len = 102400;
  2.  
  3. SET SESSION group_concat_max_len = 102400;

 

 

通過方式1查看即可。

注:此種方式在mysql重啓後會讀取配置文件重新設置,會導致設置失效,所以建議依舊要修改配置文件

b)、修改配置文件:my.ini

[mysqld]下新增配置:group_concat_max_len = 102400

重啓,通過方式1查看即可。

特別的,有時我們並不知需要多大的字節才能滿足需求,此種情況可以考慮不設置最大字節(即採用最大字節數即在配置文件設置group_concat_max_len=-1

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章