首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 字符串函數深度解析:CONCAT、CONCAT_WS 與 GROUP_CONCAT 實戰差異

     編輯:MySQL 綜合教學

1. CONCAT():基礎拼接,遇 NULL 則全 NULL

SELECT CONCAT('11','22','33');  -- 112233
SELECT CONCAT('11','22',NULL);  -- NULL

與 Oracle CONCAT 僅支持兩參數且忽略 NULL 不同,MySQL 版本參數不限但「一 NULL 全 NULL」。

2. CONCAT_WS():帶分隔符拼接,自動跳過 NULL

SELECT CONCAT_WS(',','11','22','33');      -- 11,22,33
SELECT CONCAT_WS(',','11','22',NULL);      -- 11,22

WS = With Separator。首參數為分隔符,後續參數任意個,NULL 值被靜默忽略,極適合構建 CSV、標籤列表等場景。

3. GROUP_CONCAT():行轉列神器,功能極其豐富

-- 基礎語法
GROUP_CONCAT([DISTINCT] expr [ORDER BY ...] [SEPARATOR str])

實戰示例(表 aa:id, name)

需求SQL結果
分組拼接,默認逗號SELECT id, GROUP_CONCAT(name) FROM aa GROUP BY id;1 → 10,20,20
自定義分號分隔SELECT id, GROUP_CONCAT(name SEPARATOR ';') FROM aa GROUP BY id;1 → 10;20;20
去重拼接SELECT id, GROUP_CONCAT(DISTINCT name) FROM aa GROUP BY id;1 → 10,20
按 name 降序拼接SELECT id, GROUP_CONCAT(name ORDER BY name DESC) FROM aa GROUP BY id;1 → 20,20,10

注意:結果長度受 group_concat_max_len 限制(默認 1024 字節),大數據量場景需調大該變量。

4. REPEAT():字符串重複生成

SELECT REPEAT('ab',2);  -- abab
SELECT REPEAT('a',2);   -- aa

常用於生成測試數據、填充固定長度字符串等場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved