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

MySQL 大小寫敏感度設定:預設行為、字符集影響與強制區分大小寫查詢

     編輯:MySQL 資料庫相關知識

預設行為

MySQL 預設 不區分大小寫(案例:LIKE 'a%' 會匹配 'A' 與 'a')。例外:部分字符集(如 czech)天生區分大小寫。

強制區分大小寫的三種方式

1. 查詢層級:COLLATE 子句

col_name COLLATE latin1_general_cs LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_general_cs
col_name COLLATE latin1_bin LIKE 'a%'

_cs = case-sensitive,_bin = 二進位比較(最嚴格、效能最好)。

2. 資料表層級:定義欄位時指定

CREATE TABLE t (
  name VARCHAR(50) CHARACTER SET latin1 COLLATE latin1_general_cs
);

3. 資料庫/伺服器層級:預設字符集與排序規則

CREATE DATABASE db_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

簡單比較運算子(=, >, <...)的規則

依字符「排序值」比較;相同排序值視為相等(如 'E'、'e'、'É' 在某些排序規則下相同)。

實務建議

  • 新專案統一採用 utf8mb4 + utf8mb4_0900_ai_ci(MySQL 8.0 預設,不區分大小寫、支援表情符號)。
  • 需區分大小寫的業務欄位(如帳號、代碼)單獨指定 _cs 或 _bin。
  • 避免在應用層做大小寫轉換再查詢,導致索引失效;直接用 COLLATE 指定。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved