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

MySQL 結果字串字符集與校對規則決定機制深度解析

     編輯:MySQL 綜合教學

簡單函數:輸入字符集 = 輸出字符集

UPPER, LOWER, LTRIM, RTRIM, TRIM, SUBSTRING, REPLACE, REVERSE, LEFT, RIGHT, INSTR, SOUNDEX 等單參數字串函數,保留輸入的字符集與校對規則。

例外:REPLACE() 忽略校對規則,總是大小寫不敏感比較。

多參數合併:聚合規則 (Collation Aggregation)

適用:CONCAT, CONCAT_WS, CASE, UNION, ELT, GREATEST, IF, LEAST 等。

  1. 顯式 COLLATE X → 用 X。
  2. 多個顯式校對規則衝突 → 報錯 Illegal mix of collations。
  3. 全部隱式同一校對規則 → 用該規則。
  4. 混合隱式校對規則 → 結果 無校對規則 (二進制比較)。

轉換函數:由連線變數決定

CAST, CHAR, CONV, FORMAT, HEX, SPACE 結果字符集 = character_set_connection,校對規則 = collation_connection。

實戰排錯


-- 常見錯誤
SELECT CONCAT(col_utf8, col_latin1);  -- Illegal mix of collations
-- 解法
SELECT CONCAT(col_utf8, col_latin1 COLLATE utf8mb4_general_ci);
-- 或統一表/欄位字符集為 utf8mb4

最佳實踐

  • 全庫統一 utf8mb4 + utf8mb4_0900_ai_ci (8.0) / utf8mb4_general_ci (5.7)。
  • 連線字符集顯式設定:SET NAMES utf8mb4 / PDO charset=utf8mb4。
  • 跨庫/遷移資料時,先 CONVERT TO CHARACTER SET utf8mb4 再合併。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved