SQL查詢中,會碰到將group by之后的數據拼接成字符串的場景。這時就該GROUP_CONCAT函數出馬了,不得不說,好用是真好用,但是坑也是真坑。
因為默認GROUP_CONCAT函數返回的結果大小被MySQL默認限制為1024(字節)的長度。
查看方式:
show variables like "group_concat_max_len";
這時就需要修改 group_concat_max_len 參數到需要的大小,比如102400,擴大一百倍。修改的方式有兩種:
方法一:在MySQL的配置文件中加入如下配置(推薦):
group_concat_max_len = 102400
方法二:更簡單的操作方法,執行SQL語句:
SET GLOBAL group_concat_max_len = 102400; SET SESSION group_concat_max_len = 102400;
ps:該方法缺點是重啟服務后設置失效。只適合沒有權限操作數據庫服務器,但是又必修使用GROUP_CONCAT返回超過1024長度的情況
-----------------------------------------------------------------------我是結束分割線,但是如果你實在無聊,也可以繼續往下看--------------------------------------------------------------------------------------------------------------------------
另外,設置“group_concat_max_len = -1”則為最大值,group_concat_max_len 的最大值為4294967295 (2^32 - 1)字節,一般也用不到。
至於MySQL為什么限制group_concat_max_len 的大小,不得而知,希望知道大神不吝賜教