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

MySQL CONCAT() 函數深度解析:從基本語法到二進制轉換規則

     編輯:MySQL 綜合教學

函數原型

CONCAT(str1, str2, ...)

回傳所有參數連接後的字串。參數個數不限。

核心行為詳解

1. NULL 傳播機制

任一參數為 NULL,整體回傳 NULL。

mysql> SELECT CONCAT('My', NULL, 'QL');
+-------------------------+
| CONCAT('My',NULL,'QL')  |
+-------------------------+
| NULL                    |
+-------------------------+

2. 數值隱含轉換為二進制字串

數值參數會被轉為二進制字串格式(如 14.3 → '14.3')。若需字元字串,請顯式轉型:

SELECT CONCAT(CAST(int_col AS CHAR), char_col);

3. 二進制與非二進制結果判定

  • 所有參數均為非二進制字串 → 結果為非二進制字串。
  • 含任一二進制字串參數 → 結果為二進制字串(影響比較大小寫敏感度)。

實用範例

mysql> SELECT CONCAT('My', 'S', 'QL');      -- 'MySQL'
mysql> SELECT CONCAT('My', NULL, 'QL');   -- NULL
mysql> SELECT CONCAT(14.3);               -- '14.3' (二進制字串)

最佳實踐

  • 連接可能為 NULL 的欄位時,使用 COALESCE(col, '') 或 IFNULL(col, '') 預處理。
  • 需明確字元集結果時,對數值欄位加 CAST(... AS CHAR)。
  • 大量字串拼接考慮 GROUP_CONCAT 或應用層處理,避免超過 max_allowed_packet。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved