久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

SQL Server與MySQL中排序規(guī)則與字符集是什么

130次閱讀
沒有評論

共計 2069 個字符,預計需要花費 6 分鐘才能閱讀完成。

這篇文章主要講解了“SQL Server 與 MySQL 中排序規(guī)則與字符集是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著丸趣 TV 小編的思路慢慢深入,一起來研究和學習“SQL Server 與 MySQL 中排序規(guī)則與字符集是什么”吧!

字符集 排序規(guī)則

字符集是針對不同語言的字符編碼的集合,比如 UTF- 8 字符集,GBK 字符集,GB2312 字符集等等,不同的字符集使用不同的規(guī)則給字符進行編碼。排序規(guī)則則是在特定字符集的基礎上特定的字符排序方式,排序規(guī)則是基于字符集的,是對字符集在排序方式維度上的一個劃分。

排序規(guī)則是依賴于字符集的,一種字符集可以有多種排序規(guī)則,但是一種排序規(guī)則只能基于某一種字符集的,比如中文字符集,也即漢字,可以按照“拼音排序”、“按姓氏筆劃排序”等等。而對于英語,就沒有“拼音”和“姓氏筆畫”,但是可以分為區(qū)分大小寫、不區(qū)分大小寫等等,而其他語言下面也有自己特定的排序規(guī)則。

在 SQL Server 中,任何一種字符集的數(shù)據(jù)庫,都能存儲任何一種語言的字符。

并不是說拉丁(Latin)字符集的數(shù)據(jù)就存儲不了中文,中文(Chinese)字符集的數(shù)據(jù)庫就存儲不了蒙古語(只要操作系統(tǒng)本身支持)。sqlserver 中,不管哪種字符集(實際上是排序規(guī)則)的數(shù)據(jù)庫(或者字段),都是可以使用 nvarchar(或者 nchar),而 nvarchar(或者 nchar)是可以存儲任意非 Unicode 字符的。至于排序規(guī)則,那是根據(jù)不同的字符集所支持的不同的排序規(guī)則人為定義的。

SQL Server 中的字符集和排序規(guī)則

排序規(guī)則只不過是指定了存儲的數(shù)據(jù)的排序(比較)規(guī)則而已,換句話說就是,排序規(guī)則中已經(jīng)包含了字符集的信息。因此在 sqlserver 中,不需要關心字符集,只需要關心排序規(guī)則,sqlserver 中在創(chuàng)建只能指定排序規(guī)則(不能直接指定字符集),如截圖,只能指定 collation,也就是字符集

在 MySQL 中的字符集和排序規(guī)則

上面說了,排序規(guī)則是依賴于字符集的,一種字符集可以有多種排序規(guī)則,但是一種排序規(guī)則只能基于某一種字符集的。如下是 MySQL 中排序規(guī)則和字符集的對應關系。

MySQL 的建庫語法比較扯,可以指定字符集和排序規(guī)則,如果指定的排序規(guī)則在字符集的下面,則是沒有問題的,如果指定的排序規(guī)則不在字符集下面,則會報錯。

比如下面這一句,排序規(guī)則 utf8_bin 是屬于字符集 utf8 下面的一種排序規(guī)則,這個語句執(zhí)行是沒有問題的

create database test_database2 charset utf8 collate utf8_bin;

再比如下面這一句,排序規(guī)則 latin1_bin 不是屬于字符集 utf8 下面的一種排序規(guī)則,這個語句執(zhí)行是會報錯的

create database test_database2 charset utf8 collate latin1_bin;

以上是字符集和排序規(guī)則在 sqlserver 和 MySQL 中的一些基本應用,再說說常用的排序規(guī)則的區(qū)別

***_genera_ci ***_genera_cs ***_bin 常見排序規(guī)則的特點

以上是某種字符集下常用的三種排序規(guī)則,下面以常見的 utf8 為例說明。

utf8_genera_ci 不區(qū)分大小寫,ci 為 case insensitive 的縮寫,即大小寫不敏感,

utf8_general_cs 區(qū)分大小寫,cs 為 case sensitive 的縮寫,即大小寫敏感,但是目前 MySQL 版本中已經(jīng)不支持類似于 ***_genera_cs 的排序規(guī)則,直接使用 utf8_bin 替代。

utf8_bin 將字符串中的每一個字符用二進制數(shù)據(jù)存儲,區(qū)分大小寫。

那么,同樣是區(qū)分大小寫,utf8_general_cs 和 utf8_bin 有什么區(qū)別?

cs 為 case sensitive 的縮寫,即大小寫敏感;bin 的意思是二進制,也就是二進制編碼比較。

utf8_general_cs 排序規(guī)則下,即便是區(qū)分了大小寫,但是某些西歐的字符和拉丁字符是不區(qū)分的,比如 auml;=a,但是有時并不需要 auml;=a,所以才有 utf8_bin

utf8_bin 的特點在于使用字符的二進制的編碼進行運算,任何不同的二進制編碼都是不同的,因此在 utf8_bin 排序規(guī)則下:auml; a

在 utf8_genera_ci 的情況下 A =a,auml;=a

在 utf8_bin 排序規(guī)則下,A a, auml; a

所以要想?yún)^(qū)分大小寫,有沒有特殊需求,就直接使用 utf8_bin(實際上 ***_general_cs 在 MySQL 中本身就不支持,在 SQL Server 中支持)。以上字符集的特點以及使用情況在 SQL Server 中表現(xiàn)為類似。

感謝各位的閱讀,以上就是“SQL Server 與 MySQL 中排序規(guī)則與字符集是什么”的內容了,經(jīng)過本文的學習后,相信大家對 SQL Server 與 MySQL 中排序規(guī)則與字符集是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是丸趣 TV,丸趣 TV 小編將為大家推送更多相關知識點的文章,歡迎關注!

正文完
 
丸趣
版權聲明:本站原創(chuàng)文章,由 丸趣 2023-07-17發(fā)表,共計2069字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網(wǎng)絡搜集發(fā)布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 安徽省| 黄龙县| 鄄城县| 延川县| 龙口市| 白沙| 丹东市| 清徐县| 贵南县| 威远县| 抚州市| 文安县| 丹棱县| 云安县| 南通市| 宁陕县| 慈溪市| 渭源县| 舟山市| 错那县| 济南市| 庆阳市| 常熟市| 南宁市| 华蓥市| 宜川县| 桃园市| 拜泉县| 新乡县| 来宾市| 稻城县| 深泽县| 故城县| 和硕县| 泸水县| 武鸣县| 逊克县| 碌曲县| 岳普湖县| 牟定县| 监利县|