您现在的位置是:亿华云 > 数据库
SQL Server与MySQL中排序规则与字符集相关知识的一点总结
亿华云2025-10-03 20:27:26【数据库】5人已围观
简介字符集&&排序规则字符集是针对不同语言的字符编码的集合,比如UTF-8字符集,GBK字符集,GB2312字符集等等,不同的字符集使用不同的规则给字符进行编码。排序规则则是在特定字符集的
字符集&&排序规则
字符集是中排则字知识总结针对不同语言的字符编码的集合,比如UTF-8字符集,序规相关GBK字符集,符集GB2312字符集等等,中排则字知识总结不同的序规相关字符集使用不同的规则给字符进行编码。排序规则则是符集在特定字符集的基础上特定的字符排序方式,排序规则是中排则字知识总结基于字符集的,是序规相关对字符集在排序方式维度上的一个划分。
排序规则是符集依赖于字符集的,一种字符集可以有多种排序规则,中排则字知识总结但是序规相关一种排序规则只能基于某一种字符集的,比如中文字符集,符集也即汉字,中排则字知识总结可以按照“拼音排序”、序规相关“按姓氏笔划排序”等等。符集而对于英语,就没有“拼音”和“姓氏笔画”,但是云南idc服务商可以分为区分大小写、不区分大小写等等,而其他语言下面也有自己特定的排序规则。
在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排序规则下,即便是区分了大小写,但是某些西欧的字符和拉丁字符是不区分的,比如ä=a,但是有时并不需要ä=a,所以才有utf8_bin utf8_bin的特点在于使用字符的二进制的编码进行运算,任何不同的二进制编码都是不同的,因此在utf8_bin排序规则下:ä<>a在utf8_genera_ci的情况下A=a,ä=a
在utf8_bin排序规则下,A<>a,ä<>a
所以要想区分大小写,有没有特殊需求,就直接使用utf8_bin(实际上***_general_cs在MySQL中本身就不支持,在SQL Server中支持)。以上字符集的特点以及使用情况在SQL Server中表现为类似。
很赞哦!(81816)
相关文章
- 2、定期提交和投标域名注册。例如,益华网络点击“立即预订”后,平台会抢先为客户注册域名。当然,一个域名可能会被多个客户预订,所以出价最高的人中标。
- Python编程学习爆破一些简单加密的文件
- 使用 Vue 实现一个简单的鼠标拖拽滚动效果插件
- 记好这 24 个 ES6 方法,用来解决实际开发的 JS 问题
- cm域名有什么独特之处?新人要了解cm域名哪些?
- 13 岁不可能创建出 RISC-V 内核?Nicholas Sharkey:我可以
- 精通Java,却不了解泛型?
- 聊聊代码的保养
- 互联网其实拼的也是人脉,域名投资也是一个时效性很强的东西,一个不起眼的消息就会引起整个域名投资市场的动荡,因此拓宽自己的人脉圈,完善自己的信息获取渠道,让自己能够掌握更为多样化的信息,这样才更有助于自己的域名投资。
- 不要将自己锁定在自己的架构中