SQLserver排序規(guī)則基本概念探索
前言
昨天在論壇里面遇到一個比較特殊的場景。他的公司做的是海外的項目,中英再加一個當?shù)卣Z言,要兼容三種文字啊.
那有沒有什么字符集或排序規(guī)則,能兼容所有文字的?對于海外項目很痛苦啊 .Oracle 有AL32UTF8 ,MySQL 有UTF8 ,那SQL Server 有嗎?
基本概念
ASCII編碼
在計算機發(fā)明后不久,計算機只在美國用。他們創(chuàng)造出了ASCII編碼,來表示:空格、標點符號、數(shù)字、大小寫字母,控制符等??梢酝暾谋磉_所有的英文。但是也只支持英文。
GBK編碼
后來隨著計算機的流行,中國人民通過對 ASCII 編碼的中文擴充改造,產(chǎn)生了 GB2312 編碼,可以表示6000多個常用漢字。漢字實在是太多了,包括繁體和各種字符,于是產(chǎn)生了
GBK 編碼,它包括了 GB2312 中的編碼,同時擴充了很多。中國是個多民族國家,各個民族幾乎都有自己獨立的語言系統(tǒng),為了表示那些字符,繼續(xù)把 GBK 編碼擴充為 GB18030 編碼。
每個國家都像中國一樣,把自己的語言編碼,于是出現(xiàn)了各種各樣的編碼,如果你不安裝相應的編碼,就無法解釋相應編碼想表達的內(nèi)容。
終于,有個叫 ISO 的組織看不下去了。他們一起創(chuàng)造了一種編碼 UNICODE ,這種編碼非常大,大到可以容納世界上任何一個文字和標志。所以只要電腦上有 UNICODE 這種編碼系統(tǒng),無論是全球哪種文字,只需要保存文件的時候,保存成 UNICODE 編碼就可以被其他電腦正常解釋。
UTF-8 AND UTF-16
UNICODE 在網(wǎng)絡(luò)傳輸中,出現(xiàn)了兩個標準 UTF-8 和 UTF-16,分別每次傳輸 8個位(2個字節(jié))和 16個位(4個字節(jié))。于是就會有人產(chǎn)生疑問,UTF-8 既然能保存那么多文字、符號,為什么國內(nèi)還有這么多使用 GBK 等編碼的人?因為 UTF-8 等編碼體積比較大,占電腦空間比較多,如果面向的使用人群絕大部分都是中國人,用GBK 等編碼也可以。
總的來說:
Unicode 是「字符集」
UTF-8 是「編碼規(guī)則」
其中:
字符集:為每一個「字符」分配一個唯一的 ID(學名為碼位 / 碼點 / Code Point)
編碼規(guī)則:將「碼位」轉(zhuǎn)換為字節(jié)序列的規(guī)則(編碼/解碼 可以理解為 加密/解密 的過程)
排序規(guī)則
比如我們常用的:Chinese_PRC_CI_AS ,前面部分是Chinese_PRC 這個部分表示支持的中國大陸的字符集。但是這里有個特別需要注意的事項,劃重點,在很多博客上面會有這樣的描述:
大陸簡體字UNICODE的排序規(guī)則
這里有很大的歧義。并不是說這個排序規(guī)則對所有字符都是有的Unicode。這樣說并不準確。
排序規(guī)則的后半部份即后綴 含義:
_BIN 二進制排序
_CI(CS) 是否區(qū)分大小寫,CI不區(qū)分,CS區(qū)分(case-insensitive/case-sensitive)
_AI(AS) 是否區(qū)分重音,AI不區(qū)分,AS區(qū)分(accent-insensitive/accent-sensitive)
_KI(KS) 是否區(qū)分假名類型,KI不區(qū)分,KS區(qū)分(kanatype-insensitive/kanatype-sensitive)
_WI(WS) 是否區(qū)分寬度 WI不區(qū)分,WS區(qū)分(width-insensitive/width-sensitive)
區(qū)分大小寫:如果想讓比較將大寫字母和小寫字母視為不等,請選擇該選項。
區(qū)分重音:如果想讓比較將重音和非重音字母視為不等,請選擇該選項。如果選擇該選項,
比較還將重音不同的字母視為不等。
區(qū)分假名:如果想讓比較將片假名和平假名日語音節(jié)視為不等,請選擇該選項。
區(qū)分寬度:如果想讓比較將半角字符和全角字符視為不等,請選擇該選項
Unicode
SQL SERVER 是支持Unicode的。對應的字符類型是nchar,nvarchar.
總結(jié)
所以,SQL SERVER 沒有這樣的和ORACLE UTF-8類似的排序規(guī)則。。如果是三種文字,建議把所有的字符類型定義為nchar,nvarchar 。
以上就是本文關(guān)于SQLserver排序規(guī)則基本概念探索的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:淺談sqlserver下float的不確定性、SQLserver中cube:多維數(shù)據(jù)集實例詳解、sqlserver:查詢鎖住sql以及解鎖方法等,有什么問題可以隨時留言,小編會及時回復大家,在此也希望朋友們對本站多多支持!
上一篇:有關(guān)sqlserver帳號被禁用的處理方法
欄 目:MsSql
下一篇:解決sql server2008注冊表寫入失敗,vs2013核心功能安裝失敗
本文地址:http://mengdiqiu.com.cn/a1/MsSql/10399.html
您可能感興趣的文章
- 01-10SQLServer存儲過程實現(xiàn)單條件分頁
- 01-10SQLServer中防止并發(fā)插入重復數(shù)據(jù)的方法詳解
- 01-10SqlServer 在事務中獲得自增ID的實例代碼
- 01-10SqlServer快速檢索某個字段在哪些存儲過程中(sql 語句)
- 01-10SQLServer性能優(yōu)化--間接實現(xiàn)函數(shù)索引或者Hash索引
- 01-10SQLServer數(shù)據(jù)庫中開啟CDC導致事務日志空間被占滿的原因
- 01-10SQLServer中使用擴展事件獲取Session級別的等待信息及SQLServer 2016中
- 01-10SQLServer2008新實例遠程數(shù)據(jù)庫鏈接問題(sp
- 01-10SQLServer存儲過程創(chuàng)建和修改的實現(xiàn)代碼
- 01-10Sqlserver事務備份和還原的實例代碼(必看)


閱讀排行
本欄相關(guān)
- 01-10SQLServer存儲過程實現(xiàn)單條件分頁
- 01-10SQLServer中防止并發(fā)插入重復數(shù)據(jù)的方
- 01-10SQL Server 2012降級至2008R2的方法
- 01-10SQL Server性能調(diào)優(yōu)之緩存
- 01-10SQL Server數(shù)據(jù)庫定時自動備份
- 01-10Sql Server 死鎖的監(jiān)控分析解決思路
- 01-10實現(xiàn)SQL Server 原生數(shù)據(jù)從XML生成JSON數(shù)
- 01-10SqlServer快速檢索某個字段在哪些存儲
- 01-10SqlServer 在事務中獲得自增ID的實例代
- 01-10SQLServer性能優(yōu)化--間接實現(xiàn)函數(shù)索引或
隨機閱讀
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-10delphi制作wav文件的方法
- 01-10C#中split用法實例總結(jié)
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 04-02jquery與jsp,用jquery
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改