首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL CONCAT() 字符串拼接函數完全指南

     編輯:MySQL 資料庫相關知識

CONCAT() 函數將多個字符串拼接為單一字符串,是 SQL 中構建動態文本、生成報表字段、拼接鍵值的基礎工具。本文涵蓋基本語法、多參數拼接、配合列使用、NULL 處理陷阱及 CONCAT_WS() 進階用法。

一、基本語法與標量拼接

SELECT CONCAT('FIRST ', 'SECOND');  -- 返回 'FIRST SECOND'
  • 支援任意數量參數:CONCAT(str1, str2, str3, ...)
  • 任一參數為 NULL,結果為 NULL(關鍵陷阱)。

二、列拼接實戰:employee_tbl 範例

SELECT CONCAT(id, name, work_date) FROM employee_tbl;

結果:

CONCAT(id, name, work_date)
1John2007-01-24
2Ram2007-05-27
3Jack2007-05-06
3Jack2007-04-06
4Jill2007-04-06
5Zara2007-06-06
5Zara2007-02-06

三、NULL 安全拼接:COALESCE / IFNULL 配合

若 name 可能為 NULL:

SELECT CONCAT(id, COALESCE(name, ''), work_date) FROM employee_tbl;

或使用 CONCAT_WS()(With Separator):

SELECT CONCAT_WS('-', id, name, work_date);  -- 用 '-' 連接,自動跳過 NULL

CONCAT_WS(sep, str1, str2, ...) 遇到 NULL 直接忽略,不會導致整體結果為 NULL,極適合生成 CSV、日志行、復合鍵。

四、常見應用場景

  • 生成唯一業務鍵:CONCAT_WS(':', 'ORDER', user_id, DATE_FORMAT(NOW(), '%Y%m%d%H%i%s'))
  • 動態 SQL 構建:存儲過程中拼接 PREPARE 語句。
  • 報表導出格式化:CONCAT('姓名:', name, ' 年龄:', age)
  • 全文搜索字段合成:CONCAT_WS(' ', title, content, tags) 建立全文索引。

五、性能提示

  • 拼接結果較長時,注意 max_allowed_packet 限制(默認 4MB/64MB)。
  • 大批量拼接建議在應用層完成,減少數據庫 CPU 壓力。
  • 索引列參與拼接將導致索引失效,避免 WHERE CONCAT(a,b) = 'xxx'。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved