Windows 定序排序樣式
在 SQL Server 安裝期間,會提示您選取 Windows 定序或二進位定序。您選擇的定序會影響 Microsoft SQL Server 執行個體的資料比較和排序順序行為。這個主題為 SQL Server 實作提供有關選擇 Microsoft Windows 定序或二進位定序的考量。
附註: |
---|
在 Windows 定序方面,nchar、nvarchar 和 ntext Unicode 資料類型,與 char、varchar 和 text 非 Unicode 資料類型的排序行為相同。 |
Windows 定序定義規則,來依據相關聯的 Windows 地區設定儲存字元資料。基本 Windows 定序規則指定套用字典排序時使用的字母或語言,以及用來儲存非 Unicode 字元資料的字碼頁。二進位定序是依據地區設定和資料類型所定義的編碼值順序來排序資料。SQL Server 中的二進位定序定義要使用的語言地區設定和 ANSI 字碼頁,並強制使用二進位排序順序。由於其相對簡化性,二進位定序在改善應用程式效能方面很有幫助。如果是非 Unicode 資料類型,資料比較是依據 ANSI 字碼頁中所定義的字碼指標。如果是 Unicode 資料類型,資料比較則是依據 Unicode 字碼指標。如果是 Unicode 資料類型的二進位定序,在資料排序時不會考量地區設定。例如,Latin_1_General_BIN 和 Japanese_BIN 用於 Unicode 資料時會產生相同的排序結果。
SQL Server 的舊二進位定序對 Unicode 資料的字碼指標對字碼指標比較不完整,在舊的 SQL Server 二進位定序中,是以 WCHAR 比較第一個字元,之後再逐一比較位元組。為了與舊版相容,現有的二進位定序語意不變。
在這一版的 SQL Server 中,二進位定序還包括一組新的純字碼指標比較定序。客戶可選擇移轉到新的二進位定序以得利於真正字碼指標比較的好處,並應該利用新的二進位定序以開發新的應用程式。新的 BIN2 後置詞識別實作新字碼指標定序語意的定序名稱。此外,也加入新的比較旗標來對應至新二進位排序的 BIN2。如需詳細資訊,請參閱<使用二進位定序>。
下表描述 SQL Server 2005 的 Windows 定序排序順序選項。
排序順序 (後置詞) | 排序順序描述 |
---|---|
二進位 (_BIN)1 |
依據對每一個字元定義的位元模式來排序和比較 SQL Server 資料表中的資料。二進位排序順序有區分大小寫和區分腔調字。二進位也是最快的排序順序。如需詳細資訊,請參閱<使用二進位定序>。 如果未選取這個選項,SQL Server 會遵照相關聯語言或字母之字典所定義的排序和比較規則。 |
二進位碼指標 (_BIN2)1 |
依據 Unicode 資料的 Unicode 字碼指標來排序和比較 SQL Server 資料表中的資料。對於非 Unicode 資料,二進位碼指標將使用與二進位排序相同的比較。 使用二進位碼指標排序順序的好處,就是在比較已排序 SQL Server 資料之應用程式中的資料不需要重新排序。因此,二進位碼指標排序順序可簡化應用程式的開發並提升效能。如需詳細資訊,請參閱<使用二進位定序>。 |
區分大小寫 (_CS) |
區分大寫和小寫字母。如果選取,排序時小寫字母將先於其大寫字母。 如果未選取這個選項,在排序用途上,SQL Server 會將字母大寫和小寫的版本視為相同。 |
區分腔調字 (_AS) |
區分有腔調和無腔調字元。例如,'a' 不等於 'ấ'。 如果未選取這個選項,在排序用途上,SQL Server 會將有腔調和無腔調字母的版本視為相同。 |
區分假名 (_KS) |
區分兩種類型的日文假名字元:平假名和片假名。 如果未選取這個選項,則在排序用途上,SQL Server 會將平假名和片假名字元視為相同。 |
區分全半形 (_WS) |
區分單一位元組字元和以雙位元組字元表示的相同字元。 如果未選取這個選項,在排序用途上,SQL Server 會將單一位元組和相同字元的雙位元組表示法視為相同。 |
1 如果選取,則無法使用區分大小寫、區分腔調字、區分假名和區分全半形等選項。
Windows 定序的範例
每一個 Windows 定序結合成一系列後置詞,來定義大小寫、腔調字、全半形或假名的區分。下列範例描述不同後置詞結合的排序順序行為。
Windows 定序後置詞 | 排序順序描述 |
---|---|
_BIN1 |
二進位排序。 |
_BIN21 |
二進位碼指標排序順序,SQL Server 2005 的新增功能。 |
_CI_AI |
不區分大小寫、不區分腔調字、不區分假名、不區分全半形。 |
_CI_AI_KS |
不區分大小寫、不區分腔調字、區分假名、不區分全半形 |
_CI_AI_KS_WS |
不區分大小寫、不區分腔調字、區分假名、區分全半形 |
_CI_AI_WS |
不區分大小寫、不區分腔調字、不區分假名、區分全半形 |
_CI_AS |
不區分大小寫、區分腔調字、不區分假名、不區分全半形 |
_CI_AS_KS |
不區分大小寫、區分腔調字、區分假名、不區分全半形 |
_CI_AS_KS_WS |
不區分大小寫、區分腔調字、區分假名、區分全半形 |
_CI_AS_WS |
不區分大小寫、區分腔調字、不區分假名、區分全半形 |
_CS_AI |
區分大小寫、不區分腔調字、不區分假名、不區分全半形 |
_CS_AI_KS |
區分大小寫、不區分腔調字、區分假名、不區分全半形 |
_CS_AI_KS_WS |
區分大小寫、不區分腔調字、區分假名、區分全半形 |
_CS_AI_WS |
區分大小寫、不區分腔調字、不區分假名、區分全半形 |
_CS_AS |
區分大小寫、區分腔調字、不區分假名、不區分全半形 |
_CS_AS_KS |
區分大小寫、區分腔調字、區分假名、不區分全半形 |
_CS_AS_KS_WS |
區分大小寫、區分腔調字、區分假名、區分全半形 |
_CS_AS_WS |
區分大小寫、區分腔調字、不區分假名、區分全半形 |
1 如果選取 BIN 或二進位碼指標,則無法使用 [區分大小寫]、[區分腔調字]、[區分假名] 和 [區分全半形] 等選項。