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

SQL Server 排序規則後綴完整對照:CI/CS、AI/AS、KI/KS、WI/WS、BIN 意義與選擇指南

     編輯:關於SqlServer

排序規則命名結構

前綴_後綴,例如 Chinese_PRC_CI_AS_KS_WS
前綴:字符集與地區(Chinese_PRC_ = 大陸簡體 Unicode 排序)
後綴:比較行為旗標組合

後綴旗標完整對照表

後綴全稱行為範例影響
_CICase Insensitive**不區分大小寫**'a' = 'A'
_CSCase Sensitive**區分大小寫**'a' ≠ 'A'
_AIAccent Insensitive**不區分重音/變音符號**'café' = 'cafe'
_ASAccent Sensitive**區分重音**'café' ≠ 'cafe'
_KIKana Insensitive**不區分平/片假名**(日文)'ひらがな' = 'ヒラガナ'
_KSKana Sensitive**區分平/片假名**'ひらがな' ≠ 'ヒラガナ'
_WIWidth Insensitive**不區分全/半形寬度**'A' (全形) = 'A' (半形)
_WSWidth Sensitive**區分全/半形寬度**'A' ≠ 'A'
_BINBinary**二進位碼位比較**,最快、最嚴格依 Unicode 碼位序,不考慮語言規則
_BIN2Binary Code Point補充字元區正確比較(SQL 2008+)處理 Surrogate Pair 正確

常見組合預設值

排序規則適用場景
Chinese_PRC_CI_AS大陸簡體預設:不區分大小寫、區分重音(拼音聲調視為重音)
Chinese_PRC_CI_AI不區分聲調搜尋(如拼音輸入法)
Chinese_PRC_CS_AS_KS_WS嚴格區分:大小寫、聲調、假名、全半形(精確匹配、密碼驗證)
Latin1_General_CI_AS西歐語系預設
Japanese_CI_AS_KS_WS日文:區分假名與全半形

實務常見問題與解決

1. 跨資料庫/跨表 JOIN 排序規則衝突

-- 錯誤:無法解決 equal to 操作的排序規則沖突
SELECT * FROM DB1.dbo.T1 a JOIN DB2.dbo.T2 b ON a.Name = b.Name;

-- 解決:在 JOIN 條件指定 COLLATE
SELECT * FROM DB1.dbo.T1 a JOIN DB2.dbo.T2 b
ON a.Name = b.Name COLLATE Chinese_PRC_CI_AS;

-- 或在建表時統一指定欄位排序規則
CREATE TABLE T (Name NVARCHAR(50) COLLATE Chinese_PRC_CI_AS);

2. 依拼音/筆劃排序中文

-- 拼音排序
SELECT * FROM #t ORDER BY Name COLLATE Chinese_PRC_CS_AS_KS_WS;
-- 結果:阿、國、人、中

-- 筆劃排序
SELECT * FROM #t ORDER BY Name COLLATE Chinese_PRC_Stroke_CS_AS_KS_WS;
-- 結果:一、乙、二、十、三...

3. 計算漢字筆劃與拼音首字母(進階應用)

利用 Chinese_PRC_Stroke 排序規則下 Unicode 碼位順序與筆劃數對應關係,可建立對照表函數計算筆劃總數;同理用 Chinese_PRC_CS_AS_KS_WS 排序順序對應拼音首字母區間。詳細演算法見原文函數 fun_getbh、fun_getPY。

查詢所有可用排序規則

SELECT * FROM ::fn_helpcollations()
WHERE name LIKE '%Chinese%';

選擇建議

  • **一般業務應用**:Chinese_PRC_CI_AS(相容性最好、不區分大小寫符合直覺)。
  • **密碼/Token/代碼比對**:Chinese_PRC_CS_AS_KS_WS 或 _BIN2(嚴格區分)。
  • **全文搜尋/模糊匹配**:_AI 忽略聲調/重音。
  • **跨系統整合**:統一協議使用 Latin1_General_100_CI_AS_SC(SQL 2008+ 版本,支援補充字元)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved