UPPER, LOWER, LTRIM, RTRIM, TRIM, SUBSTRING, REPLACE, REVERSE, LEFT, RIGHT, INSTR, SOUNDEX 等單參數字串函數,保留輸入的字符集與校對規則。
例外:REPLACE() 忽略校對規則,總是大小寫不敏感比較。
適用:CONCAT, CONCAT_WS, CASE, UNION, ELT, GREATEST, IF, LEAST 等。
COLLATE X → 用 X。Illegal mix of collations。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 再合併。