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

MySQL 大小寫敏感搜尋:COLLATE 校對規則實戰指南

     編輯:MySQL 綜合教學

預設行為

MySQL 預設採用 不區分大小寫 的校對規則(如 latin1_swedish_ci、utf8_general_ci),LIKE 'a%' 會同時匹配 A 與 a 開頭的行。少數字符集(如 czech)預設區分大小寫。

查詢級強制區分大小寫

使用 COLLATE 子句指定區分大小寫(_cs)或二進制(_bin)校對:

-- 方式 1:列級指定
SELECT * FROM t WHERE col_name COLLATE latin1_general_cs LIKE 'a%';

-- 方式 2:字符串常量級指定
SELECT * FROM t WHERE col_name LIKE 'a%' COLLATE latin1_general_cs;

-- 方式 3:二進制校對(最嚴格,按字節比較)
SELECT * FROM t WHERE col_name COLLATE latin1_bin LIKE 'a%';

表結構級永久設定

CREATE TABLE t (
  col_name VARCHAR(100) COLLATE latin1_general_cs  -- 或 latin1_bin
) ENGINE=InnoDB;

排序與分組中的大小寫規則

  • 簡單比較(=, >, ORDER BY, GROUP BY)基於字符的「排序值」,同排序值字符視為相等(如 E, e, É)
  • ORDER BY 升序時 NULL 在前,降序時在後
  • 聚合函數 COUNT(col) 忽略 NULL,COUNT(*) 計算行數

常用校對規則對照

字符集不區分大小寫 (ci)區分大小寫 (cs)二進制 (bin)
latin1latin1_swedish_cilatin1_general_cslatin1_bin
utf8utf8_general_ciutf8_general_csutf8_bin
utf8mb4utf8mb4_general_ciutf8mb4_0900_as_csutf8mb4_bin

選擇 _bin 可獲得最佳性能與最嚴格比較;_cs 則按語言規則區分大小寫但保留字符等價性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved