SQL SERVER建表時collate Chinese_PRC_CI_AS 是什麼意思

SQL serve在create table時經常會碰到這樣的語句,例如:passward nvarchar(10) collate chinese_prc_ci_as null。
collate chinese_prc_ci_as到底是什麼意思呢?
collate關鍵字是指定SQL server的排序規則。
Chinese_PRC表示簡體中文,繁體中文則爲Chinese_Taiwan
CI:case-insensitive 指定不區分大小寫(A 和a 被看作是一樣的),如果要在查詢時區分輸入的大小寫則改爲CS
AS:Accent sensitive 指定區分重音,同樣如果不需要區分重音,則改爲AI

COLLATE可以針對整個數據庫更改排序規則,也可以單獨修改某一個表或者某一個字段的排序規則。
排序規則指定的不對,會對你庫裏的數據造成影響,比如你如果指定了SQL_Latin_90,然後往裏面存放中文內容的話,這些中文
內容就會變成問號。

-----------------------------------------------------------------------------------------
在兩個數據庫是不同排序規則的時候,可用此功能強制將一個數據表的排序規則按照另一個表的排序規則,進行查詢。
table1.field1 COLLATE Chinese_PRC_CI_AS = table2.field1

---詳細解答----------------------------------------------------------------------------------------------
1.collate是一個子句,可應用於數據庫定義或列定義以定義排序規則,或應用於字符串表達式以應用排序規則投影。 
語法是collate collation_name 
collation_name ::={windows_collation_name}|{sql_collation_name} 
參數collate_name是應用於表達式、列定義或數據庫定義的排序規則的名稱。collation_name 可以只是指定的 


Windows_collation_name 或 SQL_collation_name。 
Windows_collation_name 是 Windows 排序規則的排序規則名稱。參見 Windows 排序規則名稱。 
SQL_collation_name 是 SQL 排序規則的排序規則名稱。參見 SQL 排序規則名稱。 


下面簡單介紹一下排序規則: 
什麼叫排序規則呢?MS是這樣描述的:"在 Microsoft SQL Server 2000 中, 
字符串的物理存儲由排序規則控制。排序規則指定表示每個字符的位模式以及存 
儲和比較字符所使用的規則。" 
在查詢分析器內執行下面語句,可以得到SQL SERVER支持的所有排序規則。 
select * from ::fn_helpcollations() 
排序規則名稱由兩部份構成,前半部份是指本排序規則所支持的字符集。 
如: 
Chinese_PRC_CS_AI_WS 
前半部份:指UNICODE字符集,Chinese_PRC_指針對大陸簡體字UNICODE的排序規則。 
排序規則的後半部份即後綴 含義: 
_BIN 二進制排序 
_CI(CS) 是否區分大小寫,CI不區分,CS區分 
_AI(AS) 是否區分重音,AI不區分,AS區分 
_KI(KS) 是否區分假名類型,KI不區分,KS區分 
_WI(WS) 是否區分寬度 WI不區分,WS區分 
區分大小寫:如果想讓比較將大寫字母和小寫字母視爲不等,請選擇該選項。 
區分重音:如果想讓比較將重音和非重音字母視爲不等,請選擇該選項。如果選擇該選項, 
比較還將重音不同的字母視爲不等。 
區分假名:如果想讓比較將片假名和平假名日語音節視爲不等,請選擇該選項。 
區分寬度:如果想讓比較將半角字符和全角字符視爲不等,請選擇該選項

發佈了30 篇原創文章 · 獲贊 5 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章