加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

SQL Server与MySQL中排序法则与字符集相干常识的一点总结

发布时间:2018-08-15 15:53:32 所属栏目:编程 来源:佚名
导读:技能沙龙 | 邀您于8月25日与国美/AWS/转转三位专家配合切磋小措施电商拭魅战 字符集排序法则 字符集是针对差异说话的字符编码的荟萃,好比UTF-8字符集,GBK字符集,GB2312字符集等等,差异的字符集行使差异的法则给字符举办编码。排序法则则是在特定字符集的
技能沙龙 | 邀您于8月25日与国美/AWS/转转三位专家配合切磋小措施电商拭魅战

字符集&&排序法则

字符集是针对差异说话的字符编码的荟萃,好比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下面的一种排序法则,这个语句执行是没有题目的

  1. create database test_database2 charset utf8 collate utf8_bin; 

再好比下面这一句,排序法则latin1_bin不是属于字符集utf8下面的一种排序法则,这个语句执行是会报错的

  1. 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排序法则下:ä<>a

在utf8_genera_ci的环境下A=a,ä=a

SQL Server与MySQL中排序法则与字符集相干常识的一点总结

在utf8_bin排序法则下,A<>a,ä<>a

SQL Server与MySQL中排序法则与字符集相干常识的一点总结

以是要想区分巨细写,有没有非凡需求,就直接行使utf8_bin(现实上***_general_cs在MySQL中自己就不支持,在SQL Server中支持)。以上字符集的特点以及行使环境在SQL Server中示意为相同。

【编辑保举】

  1. 是什么影响了数据库索引选型?
  2. 数据库插入可能更新大批量数据的机能优化
  3. 静默错误:Oracle数据库是怎样应对和处理赏罚的 ?
  4. 【器材】数据库计划中的6个最佳实践步调
  5. 为什么MySQL存储进程、函数和触发器对机能欠好
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读