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

SQL Server 排序規則完整解析:命名結構、後綴含義與選擇指南

     編輯:關於SqlServer

排序規則控制字串的儲存位模式與比較規則。掌握其命名結構與後綴含義,能精準選擇符合業務需求的排序規則。

查看所有支援的排序規則

SELECT * FROM ::fn_helpcollations();

排序規則命名結構

前綴 (字元集/語系) + 後綴 (比較行為)

範例:Chinese_PRC_CS_AI_WS

  • Chinese_PRC_:大陸簡體中文 Unicode 排序規則
  • CS_AI_WS:後綴組合

後綴完整對照表

後綴全稱行為備註
_BINBinary二進位比較最快,區分大小寫/重音/寬度,不符合語言習慣
_CI / _CSCase Insensitive / Sensitive不區分/區分大小寫預設通常為 CI
_AI / _ASAccent Insensitive / Sensitive不區分/區分重音歐洲語系重要
_KI / _KSKana Insensitive / Sensitive不區分/區分平假名/片假名日文環境關鍵
_WI / _WSWidth Insensitive / Sensitive不區分/區分半形/全形中日韓環境關鍵

常見組合範例

排序規則適用場景
Chinese_PRC_CI_AI_WS大陸簡體、不區分大小寫/重音、區分全半形 (通用預設)
Chinese_PRC_CS_AS_WS嚴格區分大小寫、重音、全半形 (精確比對需求)
SQL_Latin1_General_CP1_CI_ASSQL Server 2000 時代常見預設,西歐語系
Latin1_General_100_CI_AI_SC_UTF8SQL Server 2019+ 推薦,支援補充字元、UTF-8

選擇決策樹

  1. 語系:中文選 Chinese_PRC_* 或 Chinese_Taiwan_Stroke_* (筆畫序)
  2. 大小寫敏感度:一般應用 CI;帳號/密碼/代碼比對選 CS
  3. 重音敏感度:中文環境通常 AI;歐文需求視業務而定
  4. 假名敏感度:日文系統選 KS,其他 KI
  5. 寬度敏感度:中文/日文系統強烈建議 WS (區分全半形),避免「A」≠「A」導致查無資料

資料庫/資料行/運算式層級指定

' 資料庫層級
CREATE DATABASE TestDB COLLATE Chinese_PRC_CI_AI_WS;

' 資料行層級
CREATE TABLE T (Col1 NVARCHAR(50) COLLATE Chinese_PRC_CS_AS_WS);

' 查詢運算式層級
SELECT * FROM T WHERE Col1 = N'值' COLLATE Chinese_PRC_CI_AI_WS;

遷移與相容性提醒

  • 資料庫排序規則建立後**不可變更**,僅能重建資料庫
  • 跨資料庫/伺服器查詢若排序規則衝突,需顯式 COLLATE 指定
  • SQL Server 2019+ 推薦使用 _SC_UTF8 結尾的排序規則,原生支援 UTF-8、補充字元

正確選擇排序規則是國際化、多語系系統穩定運行的基石,請在架構設計階段確定並文件化。

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