欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 后台管理


新闻资讯

MENU

软件开发知识
原文出处: MSSQL123

字符集&&排序法则

字符集是针对差异语言的字符编码的荟萃,好比UTF-8字符集,GBK字符集,GB2312字符集等等,差异的字符集利用差异的法则给字符举办编码。排序法则则是在特定字符集的基本上特定的字符排序方法,排序法则是基于字符集的,是对字符集在排序方法维度上的一个分别。

排序法则是依赖于字符集的,一种字符集可以有多种排序法则,可是一种排序法则只能基于某一种字符集的,好比中文字符集,也即汉字,可以凭据“拼音排序”、“按姓氏笔划排序”等等。而对付英语,就没有“拼音”和“姓氏笔画”,可是可以分为区分巨细写、不区分巨细写等等,而其他语言下面也有本身特定的排序法则。

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

并不是说拉丁(Latin)字符集的数据就存储不了中文,劳务派遣管理系统,中文(Chinese)字符集的数据库就存储不了蒙古语(只要操纵系统自己支持)。sqlserver中,不管哪种字符集(实际上是排序法则)的数据库(可能字段),都是可以利用nvarchar(可能nchar),而nvarchar(可能nchar)是可以存储任意非Unicode字符的。至于排序法则,那是按照差异的字符集所支持的差异的排序法则工钱界说的。

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

排序法则只不外是指定了存储的数据的排序(较量)法则罢了,换句话说就是,排序法则中已经包括了字符集的信息。因此在sqlserver中 ,不需要体贴字符集,只需要体贴排序法则,sqlserver中在建设只能指定排序法则(不能直接指定字符集),如截图,只能指定collation,也就是字符集

SQL Server 与 MySQL 中排序法<a href=劳务调派信息打点系统 则与字符集相关知识的一点总结" class="aligncenter size-full wp-image-29286" title="380271-20180727144722839-266720475" src="/uploads/allimg/c180730/1532Y4LI2610-19459.png" /> 

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

上面说了,排序法则是依赖于字符集的,一种字符集可以有多种排序法则,可是一种排序法则只能基于某一种字符集的。如下是MySQL中排序法则和字符集的对应干系。

SQL Server 与 MySQL 中排序法<a href=劳务调派信息打点系统 则与字符集相关知识的一点总结" class="aligncenter size-full wp-image-29287" title="380271-20180727145444531-130475203" src="/uploads/allimg/c180730/1532Y4LJ3360-24639.png" />

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 中排序法<a href=劳务调派信息打点系统 则与字符集相关知识的一点总结" class="aligncenter size-full wp-image-29288" title="380271-20180727151026935-1947973594" src="/uploads/allimg/c180730/1532Y4LJ5E0-39208.png" />

以上是字符集和排序法则在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 中排序法<a href=劳务调派信息打点系统 则与字符集相关知识的一点总结" class="aligncenter size-full wp-image-29289" title="380271-20180727153818225-2129415070" src="/uploads/allimg/c180730/1532Y4LJ9360-4Pa.png" /> 

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

    SQL Server 与 MySQL 中排序法<a href=劳务调派信息打点系统 则与字符集相关知识的一点总结" class="aligncenter size-full wp-image-29290" title="380271-20180727153917167-728522956" src="/uploads/allimg/c180730/1532Y4LK3X0-54Y7.png" />