04-SQLServer的排序規則(字符集編碼)


一、總結

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  

***************************************************


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM