排序規則控制字串的儲存位模式與比較規則。掌握其命名結構與後綴含義,能精準選擇符合業務需求的排序規則。
SELECT * FROM ::fn_helpcollations();
前綴 (字元集/語系) + 後綴 (比較行為)
範例:Chinese_PRC_CS_AI_WS
Chinese_PRC_:大陸簡體中文 Unicode 排序規則CS_AI_WS:後綴組合| 後綴 | 全稱 | 行為 | 備註 |
|---|---|---|---|
_BIN | Binary | 二進位比較 | 最快,區分大小寫/重音/寬度,不符合語言習慣 |
_CI / _CS | Case Insensitive / Sensitive | 不區分/區分大小寫 | 預設通常為 CI |
_AI / _AS | Accent Insensitive / Sensitive | 不區分/區分重音 | 歐洲語系重要 |
_KI / _KS | Kana Insensitive / Sensitive | 不區分/區分平假名/片假名 | 日文環境關鍵 |
_WI / _WS | Width Insensitive / Sensitive | 不區分/區分半形/全形 | 中日韓環境關鍵 |
| 排序規則 | 適用場景 |
|---|---|
Chinese_PRC_CI_AI_WS | 大陸簡體、不區分大小寫/重音、區分全半形 (通用預設) |
Chinese_PRC_CS_AS_WS | 嚴格區分大小寫、重音、全半形 (精確比對需求) |
SQL_Latin1_General_CP1_CI_AS | SQL Server 2000 時代常見預設,西歐語系 |
Latin1_General_100_CI_AI_SC_UTF8 | SQL Server 2019+ 推薦,支援補充字元、UTF-8 |
Chinese_PRC_* 或 Chinese_Taiwan_Stroke_* (筆畫序)CI;帳號/密碼/代碼比對選 CSAI;歐文需求視業務而定KS,其他 KIWS (區分全半形),避免「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 指定_SC_UTF8 結尾的排序規則,原生支援 UTF-8、補充字元正確選擇排序規則是國際化、多語系系統穩定運行的基石,請在架構設計階段確定並文件化。