溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時(shí)間:2021-12-03 17:26:28 來(lái)源:億速云 閱讀:345 作者:iii 欄目:數(shù)據(jù)庫(kù)

這篇文章主要講解了“SQL Server與MySQL中排序規(guī)則與字符集是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“SQL Server與MySQL中排序規(guī)則與字符集是什么”吧!

字符集&&排序規(guī)則

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

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

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

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

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

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

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

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

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

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

MySQL的建庫(kù)語(yǔ)法比較扯,可以指定字符集和排序規(guī)則,如果指定的排序規(guī)則在字符集的下面,則是沒(méi)有問(wèn)題的,如果指定的排序規(guī)則不在字符集下面,則會(huì)報(bào)錯(cuò)。

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

create database test_database2 charset utf8 collate utf8_bin;

再比如下面這一句,排序規(guī)則latin1_bin不是屬于字符集utf8下面的一種排序規(guī)則,這個(gè)語(yǔ)句執(zhí)行是會(huì)報(bào)錯(cuò)的

create database test_database2 charset utf8 collate latin1_bin;

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

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

***_genera_ci & ***_genera_cs & ***_bin 常見(jiàn)排序規(guī)則的特點(diǎn)

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

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

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

  • utf8_bin將字符串中的每一個(gè)字符用二進(jìn)制數(shù)據(jù)存儲(chǔ),區(qū)分大小寫(xiě)。

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

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

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

  • utf8_bin的特點(diǎn)在于使用字符的二進(jìn)制的編碼進(jìn)行運(yùn)算,任何不同的二進(jìn)制編碼都是不同的,因此在utf8_bin排序規(guī)則下:&auml;<>a

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

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

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

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

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

感謝各位的閱讀,以上就是“SQL Server與MySQL中排序規(guī)則與字符集是什么”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)SQL Server與MySQL中排序規(guī)則與字符集是什么這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI