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

mobox發表於2020-05-15

一、總結

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 :區分重音


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28660496/viewspace-2692360/,如需轉載,請註明出處,否則將追究法律責任。

相關文章