SQLserver排序規則基本概念探索

2022-09-21 09:54:07 字數 2004 閱讀 3472

前言

昨天在論壇裡面遇到乙個比較特殊的場景。他的公司做的是海外的專案,中英再加乙個當地語言,要相容三種文字啊.

那有沒有什麼字符集或排序規則,能相容所有文字的?對於海外專案很痛苦啊 .oracle 有al32utf8 ,mysql 有utf8 ,那sql server 有嗎?

基本概念

ascii編碼

在計算機發明後不久,計算機只在美國用。他們創造出了ascii編碼,來表示:空格、標點符號、數字、大小寫字母,控制符等。可以完整的表達所有的英文。但是也只支援英文。

gbk編碼

後www.cppcns.com來隨著計算機的流行,中國人民通過對 ascii 編碼的中文擴充改造,產生了 gb2312 編碼,可以表示6000多個常用漢字。漢字實在是太多了,包括繁體和各種字元,於是產生了

gbk 編碼,它包括了 gb2312 中的編碼,同時擴充了很多。中國是個多民族國家,各個民族幾乎都有自己獨立的語言系統,為了表示那些字元,繼續把 gbk 編碼擴充為 gb18030 編碼。

每個國家都像中國一樣,把自己的語言編碼,於是出現了各種各樣的編碼,如果你不安裝相應的編碼,就無法解釋相應編碼想表達的內容。

終於,有個叫 iso 的組織看不下去了。他們一起創造了一種編碼 unicowww.cppcns.comde ,這種編碼非常大,大到可以容納世界上任何乙個文字和標誌。所以只要電腦上有 unicode 這種編碼系統,無論是全球哪種文字,只需要儲存檔案的時候,儲存成 unicode 編碼就可以被其他電腦正常解釋。

utf-8 and utf-16

unicode 在網路傳輸中,出現了兩個標準 utf-8 和 utf-16,分別每次傳輸 8個位(2個位元組)和 16個位(4個位元組)。於是就會有人產生疑問,utf-8 既然能儲存那麼多文字、符號,為什麼國內還有這麼多使用 gbk 等編碼的人?因為 utf-8 等編碼體積比較大,佔電腦空間比較多,如果面向的使用人群絕大部分都是中國人,用gbk 等編碼也可以。

總的來說:

unicode 是「字符集」

utf-8 是「編碼規則」

其中:字符集:為每乙個「字元」分配乙個唯一的 id(學名為碼位 / 碼點 / code point)

編碼規則:將「碼位」轉換為位元組序列的規則(編碼/解碼 可以理解為 加密/解密 的過程)

排序規則

比如我們常用的:chinese_prc_ci_as ,前面部分是chinese_prc 這個部分表示支援的中國大陸的字符集。但是這裡有個特別需要注意的事項,劃重點,在很多部落格上面會有這樣的描述:

大陸簡體字unicode的排序規則

這裡有很大的歧義。並不是說這個排序規則對所有字元都是有的unicode。這樣說並不準確。

排序規則的後半部份即字尾 含義:

_bin 二進位制排序

_ci(cs) 是否區分大小寫,ci不區分,cs區分(case-insensitive/case-sensitive)

_ai(as) 是否區分重音,ai不區分,as區分(accent-insensitive/accent-sensitive)

_ki(ks) 是否區分假名型別,ki不區分,ks區分(kanatype-insensitive/kanatype-sensitive)

_wi(ws) 是否區分寬度lansro wi不區分,ws區分(width-insensitive/width-sensitive) 

區分大小寫:如果想讓比較將大寫字母和小寫字母視為不等,請選擇該選項。

區分重音:如果想讓程式設計客棧比較將重音和非重音字母視為不等,請選擇該選項。如果選擇該選項,

比較還將重音不同的字母視為不等。

區分假名:如果想讓比較將片假名和平假名日語音節視為不等,請選擇該選項。

區分寬度:如果想讓比較將半形字元和全形字符視為不等,請選擇該選項

unicode

sql server 是支援unicode的。對應的字元型別是nchar,nvwww.cppcns.comarchar.

總結所以,sql server 沒有這樣的和oracle utf-8類似的排序規則。。如果是三種文字,建議把所有的字元型別定義為nchar,nvarchar 。

sql server 排序規則

sql server 排序規則 檢視伺服器的排序規則 select serverproperty n collation select serverproperty collation chinese prc ci as 修改資料庫的排序規則 alter database tempdb collat...

SQL server 排序規則

排序規則名稱由兩部份構成,前半部份是指本排序規則所支援的字符集。如 chinese prc cs ai ws 前半部份 指unicode字符集,chinese prc 指針對大陸簡體字unicode的排序規則。排序規則的後半部份即字尾 含義 bin 二進位制排序 ci cs 是否區分大小寫,ci不區...

SQLServer排序規則知識總結

2.3.修改資料庫排序規則 2.4.修改表排序規則 檢視伺服器排序規則 安裝時指定的排序規則 select serverproperty collation as servercollation,databasepropertyex tempdb collation as tempdbcollati...