SQL Server与MySQL中排序规则与字符集是什么

45次阅读
没有评论

共计 2069 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章主要讲解了“SQL Server 与 MySQL 中排序规则与字符集是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“SQL Server 与 MySQL 中排序规则与字符集是什么”吧!

字符集 排序规则

字符集是针对不同语言的字符编码的集合,比如 UTF- 8 字符集,GBK 字符集,GB2312 字符集等等,不同的字符集使用不同的规则给字符进行编码。排序规则则是在特定字符集的基础上特定的字符排序方式,排序规则是基于字符集的,是对字符集在排序方式维度上的一个划分。

排序规则是依赖于字符集的,一种字符集可以有多种排序规则,但是一种排序规则只能基于某一种字符集的,比如中文字符集,也即汉字,可以按照“拼音排序”、“按姓氏笔划排序”等等。而对于英语,就没有“拼音”和“姓氏笔画”,但是可以分为区分大小写、不区分大小写等等,而其他语言下面也有自己特定的排序规则。

在 SQL Server 中,任何一种字符集的数据库,都能存储任何一种语言的字符。

并不是说拉丁(Latin)字符集的数据就存储不了中文,中文(Chinese)字符集的数据库就存储不了蒙古语(只要操作系统本身支持)。sqlserver 中,不管哪种字符集(实际上是排序规则)的数据库(或者字段),都是可以使用 nvarchar(或者 nchar),而 nvarchar(或者 nchar)是可以存储任意非 Unicode 字符的。至于排序规则,那是根据不同的字符集所支持的不同的排序规则人为定义的。

SQL Server 中的字符集和排序规则

排序规则只不过是指定了存储的数据的排序(比较)规则而已,换句话说就是,排序规则中已经包含了字符集的信息。因此在 sqlserver 中,不需要关心字符集,只需要关心排序规则,sqlserver 中在创建只能指定排序规则(不能直接指定字符集),如截图,只能指定 collation,也就是字符集

在 MySQL 中的字符集和排序规则

上面说了,排序规则是依赖于字符集的,一种字符集可以有多种排序规则,但是一种排序规则只能基于某一种字符集的。如下是 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;

以上是字符集和排序规则在 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 排序规则下,即便是区分了大小写,但是某些西欧的字符和拉丁字符是不区分的,比如 auml;=a,但是有时并不需要 auml;=a,所以才有 utf8_bin

utf8_bin 的特点在于使用字符的二进制的编码进行运算,任何不同的二进制编码都是不同的,因此在 utf8_bin 排序规则下:auml; a

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

在 utf8_bin 排序规则下,A a, auml; a

所以要想区分大小写,有没有特殊需求,就直接使用 utf8_bin(实际上 ***_general_cs 在 MySQL 中本身就不支持,在 SQL Server 中支持)。以上字符集的特点以及使用情况在 SQL Server 中表现为类似。

感谢各位的阅读,以上就是“SQL Server 与 MySQL 中排序规则与字符集是什么”的内容了,经过本文的学习后,相信大家对 SQL Server 与 MySQL 中排序规则与字符集是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-17发表,共计2069字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)