中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL Server與MySQL中排序規則與字符集是什么

發布時間:2021-12-03 17:26:28 來源:億速云 閱讀:354 作者:iii 欄目:數據庫

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

字符集&&排序規則

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

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

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

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

SQL Server中的字符集和排序規則

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

SQL Server與MySQL中排序規則與字符集是什么

在MySQL中的字符集和排序規則

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

SQL Server與MySQL中排序規則與字符集是什么

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

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

create database test_database2 charset utf8 collate utf8_bin;

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

create database test_database2 charset utf8 collate latin1_bin;

SQL Server與MySQL中排序規則與字符集是什么

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

***_genera_ci & ***_genera_cs & ***_bin 常見排序規則的特點

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

  • utf8_genera_ci不區分大小寫,ci為case insensitive的縮寫,即大小寫不敏感,

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

  • utf8_bin將字符串中的每一個字符用二進制數據存儲,區分大小寫。

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

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

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

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

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

SQL Server與MySQL中排序規則與字符集是什么

在utf8_bin排序規則下,A<>a,&auml;<>a

SQL Server與MySQL中排序規則與字符集是什么

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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长岛县| 和顺县| 满城县| 雅安市| 双柏县| 柳江县| 舟山市| 庆安县| 萨嘎县| 松滋市| 阿拉尔市| 色达县| 阳信县| 西乌珠穆沁旗| 登封市| 阿尔山市| 大理市| 新和县| 平度市| 施甸县| 邳州市| 衢州市| 德化县| 合江县| 凤冈县| 临湘市| 平昌县| 张家界市| 资源县| 永顺县| 延津县| 铜鼓县| 庐江县| 马边| 恩平市| 房产| 灵宝市| 浮山县| 景谷| 奉化市| 桑日县|