日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql group concat_MySQL 的 GROUP_CONCAT 函数详解

發布時間:2023/12/20 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql group concat_MySQL 的 GROUP_CONCAT 函数详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

GROUP_CONCAT(expr) 函數會從 expr 中連接所有非 NULL 的字符串。如果沒有非 NULL 的字符串,那么它就會返回 NULL。語法如下:

GROUP_CONCAT 語法規則

它在遞歸查詢中用的比較多,但要使用好它并不容易。所以讓我們一起來看看吧:

假設有這樣一張領接表模型的樹型表 t_region,它的基本結構如下:

字段

類型

大小

說明

REGION_ID

int

11

行政地區ID

PARENT_ID

int

11

上級行政地區ID

1 使用示例

【1】以逗號最為默認的連接字符

SELECT GROUP_CONCAT(a.REGION_ID) FROM t_region a;

連接所有非 NULL 的字符串

【2】可以使用 DISTINCT 過濾重復的值,也可以加入 ORDER BY 對值進行排序,還可以使用 SEPARATOR 指定分隔符:

SELECT GROUP_CONCAT( DISTINCT a.REGION_ID ORDER BY a.REGION_ID DESC SEPARATOR ' ')

FROM t_region a;

加入 DISTINCT 、 ORDER BY 與 SEPARATOR

這里的返回值以過濾了重復值,并且倒序排序,還使用了空格作為分隔符。

2 最大值限制

GROUP_CONCAT() 是有最大長度限制的,默認值是 1024。

可以通過 group_concat_max_len 參數進行動態設置。參數范圍可以是 Global 或 Session。

設置語法如下:

修改 group_concat_max_len 參數

值是無符號整型,最大值與版本位數有關:

版本

最小值

最大值

32 位

4

4294967295

64 位

4

18446744073709551615

如果 group_concat_max_len 的值被設置為小等于 512,那么 GROUP_CONCAT 的返回值類型是 VARCHAR 或 VARBINARY;否則是 TEXT 或 BLOB。

實際上,group_concat_max_len 的值可以設的更大,但會受到參數max_allowed_packet 的限制。

很多人不知道這一點,因為它只有在數據量較大的情況下才會出現。

【1】使用默認值的情況:

SELECT GROUP_CONCAT(a.REGION_ID) FROM t_region a;

使用默認值的返回結果

可以看出,當總長度達到 1024 后,后面的記錄就被截斷掉咯。

【2】group_concat_max_len 設置為最大值:

SET SESSION group_concat_max_len=18446744073709551615;

SELECT GROUP_CONCAT(a.REGION_ID) FROM t_region a;

group_concat_max_len 設置為最大值的返回結果

這樣設置之后,一般情況下,GROUP_CONCAT 就不會再出現字符串被截斷的情況啦O(∩_∩)O~

總結

以上是生活随笔為你收集整理的mysql group concat_MySQL 的 GROUP_CONCAT 函数详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。