標籤

2011年6月15日 星期三

SQL Server 定序說明

在資料庫上按滑鼠右鍵--> 內容 ...
在[一般]頁籤的最下方,即可看到此資料庫的 定序名稱...

定序名稱 可分解為:

使用語言字串
[_指定大寫]
[_是否指定大小寫]
[_是否區分腔調字]
[_二進位排序]

[_指定大寫] ==> 若加上 _Pref 即表示指定大寫,未加則不指定。
[_是否指定大小寫] ==> _CI 指定不分大小寫,_CS 指定區分大小寫。
[_是否區分腔調字] ==> _AI 指定不分腔調字,_AS 指定區分腔調字。
[_二進位排序] ==> 若加上 _BIN 即表示以二進位排序,未加則不指定。


舉例來說:
Chinese_Taiwan_Sroke_CI_AS <== 表示以繁體中文,不分大小寫,區分腔調字
Chinese_Taiwan_Sroke_CS <== 表示以繁體中文,要區分大小寫

參考
http://cp0501.blogspot.com/2007_11_01_archive.html


定序的分類

Case sensitivity(CS)
簡單來說就是區分大小寫,A跟a是不同的,如果是Case Insensitive(CI)的話A在排序或者查詢時就會被視為相同,也就是查詢A,連同a也會被查詢到。

Accent sensitivity(AS)
代表的是腔調上的差別,a跟á、o跟ó在腔調上是相同的,那查詢時是要視為相同,如果是的話,那就是Accent Insensitive(AI),如果不是的話就視為Accent sensitive。

Kana Sensitivity(KS)
日文中的片假名(Hiragana)與平假名(Katakana)如果被視為相同,那就是Kana Insensitive(KI),反之就是Kane sensitive。

Width sensitivity(WS)
當半形字與全型自被視為相同(A跟A),那就是Width Insensitive(WI),反之就是Width sensitive。

其中的BIN跟BIN2是我們前面沒提到的,這兩個定序是比較特別的,與前方提到的各種Sensitive或者Insensitive的定序是有所差異的,這種定序的執行效率比其它定序來的好,針對非unicode的資料,它是自動以ANSI Code來做為排序與比較的依據(CI、AI、KI、WI),而針對unicode資料,它則是以Unicode做為排序與比較的依據,而一旦以Unicode作為排序依據,Latin_1_General_BIN跟Japanese_BIN這兩種定序查詢回來的資料將會一模一樣,因為當資料都是非unicode時,都以ANSI Code來處理;當資料都是unicode時,就以Unicode來處理,而也因為以上特性,目前大部分的系統也習慣將資料庫的定序設定為BIN結尾的。

以下是一些我們常見到的定序結尾,C、A、K、S類的定序是可以複合被使用的,但只有BIN類的是無法結合C、A、K、S的定序被使用,這也是因為上一段中提到的BIN類定序是ANSI或Unicode來做排序與比較的原則而來。

定序的層級

我們在SQL Server中可以在以下四個定序設定等級,我們分別可以透過SSMS或SQL Expression在伺服器、資料庫、Table的欄位上指定定序:

Server
安裝時,SQL Server會要求你指定所想要的預設定序,而系統資料庫與後續新建的資料庫都會以這個定序為預設值,若後續要修改可以參考(因為要re-install原諒我無法測試):
Setting and Changing the Server Collation

Database
針對某個特定資料庫設定其定序,除了使用SSMS的介面變更外,也可以透過Alter Database指令來變更:ALTER DATABASE

Column
針對某個欄位設定其定序,除了使用SSMS的介面變更外,也可以透過Alter Table的指令來變更: Setting and Changing the Column Collation
例:Alter Table myTable Alter Column myColumn Nvarchar(10) Collate Chinese_Taiwan_Stroke_CI_AS

Expression
這部分的定序指定是在command透過collation的關鍵字來暫時複寫掉上面三個已經設定好的定序內容,相關用法可以參考:
COLLATE (Transact-SQL)
例:select * from MYTable Order by myColumn Collate Chinese_Taiwan_Stroke_CI_AS

參考
http://www.dotblogs.com.tw/jimmyyu/archive/2009/08/30/10320.aspx


可參考
http://msdn.microsoft.com/zh-tw/library/ms143515.aspx

沒有留言:

使用 DiskSpd 測試磁碟效能

  DiskSpd 是微軟創建的命令行磁碟測試工具。它結合了強大的IO工作負載定義來測量磁碟效能。由於它支援自由配置和調整參數,使其成為存儲效能測試、驗證和基準測試的理想工具。 步驟 1. 從 GitHub (說明) https://github.com/Microsoft/di...