一、總結
1.SQLServer中的排序規則就是其他關系型數據庫里所說的字符集編碼;
2.SQLServer中的排序規則可以在3處設置,如下:
服務器級別(實例):instances ----->安裝數據庫的時候設置
數據庫級別:database
表列級別:columns
所以在使用SQLServer的排序規則的時候,只需要保證這三處一致,就是正確的使用方式;
3.SQLServer的排序規則不僅影響記錄行的sort順序,還影響中文顯示是否亂碼;
4.創建數據庫時,若我們未指定排序規則,數據庫就會使用實例默認的排序規則;
5.SQLServer的排序規則只影響字符型的列,例如:char,varchar,text,nchar,nvarchar,ntext,因此在查詢視圖sys.columns中非字符型的字段的排序規則顯示是NULL;
6.需要注意的是,雖然數據庫的排序規則可以改,但是是有問題的,因為即使把數據庫的排序規則改了,庫里的表的字段的排序規則可能還是原來的,沒有改,這在使用的時候,就可能會存在問題,所以數據庫的排序規則盡力不要隨意改動。
7.排序規則中,二進制排序的速度是最快的,因為SQLServer不用做任何調整即可使用快速、簡單的排序算法。
二、查詢語句
1.查詢字符集編碼
命令:SELECT COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage')
注:
(1).該數據庫實例的排序規則是Chinese_PRC_CI_AS
(2).查出結果對應的字符集編碼
936 :簡體中文GBK
950 :繁體中文BIG5
437 :美國/加拿大英語
932 :日文
949 :韓文
866 :俄文
65001 :unicode UTF-8
2.查看實例的排序規則
命令:select serverproperty(N'Collation')
3.查看實例下所有數據庫的排序規則
命令:select name,collation_name from sys.databases
4.修改現有數據庫的排序規則
命令:alter database telno collate Chinese_PRC_BIN
注:不建議使用,即使是數據庫改了,但是庫里的表的列還是原來的。
5.查詢列的排序規則
命令:select name,collation_name from telno.sys.columns where collation_name is not null
注:非字符型的字段的排序規則顯示為NULL,所以要把NULL的結果過濾掉。
6.查看當前SQLServer版本支持的排序規則
命令:
select * from ::fn_helpcollations()
select * from fn_helpcollations()
注:
(1)雙冒號是SQL2000中調用內置函數的用法,SQL2005以上不需要使用冒號也能使用內置函數了;
(2)排序規則代表的意思詳解
Chinese_PRC_ :指針對大陸簡體字Unicode字符集的排序規則
后半部分的含義:
_BIN :二進制排序
C : case,大小寫;
A :accent,重音;
I :Insensitive,不敏感,不區分;
S :sensitive,敏感,區分;
W :width,寬度
K :kanatype,假名
eg:
_CI :不區分大小寫
_AS :區分重音
***************************************************
如下是個人開發系統,歡迎大家體驗,純屬個人愛好,想一塊玩的,私信。
易本浪賬:www.jialany.com
***************************************************