本文主要讲解“SQL Server和MySQL中有哪些排序规则和字符集”,简单明了,易学易懂。现在,请跟随边肖的思路一起学习和学习“SQL Server和MySQL中的排序规则和字符集是什么”!
字符集排序规则
字符集是不同语言的字符编码集合,如UTF-8字符集、GBK字符集、GB2312字符集等。不同的字符集使用不同的规则来编码字符。排序规则是基于特定字符集的特定字符排序方法。排序规则基于字符集,是排序方法维度中字符集的一部分。
排序规则取决于字符集。一个字符集可以有多种排序规则,但是一个排序规则只能基于某个字符集,比如汉字集,也就是可以按照拼音、姓氏笔画等等排序的汉字。对于英语来说,没有拼音和姓氏笔画,但可以分为区分大小写、不区分大小写等,而其他语言则有自己特定的排序规则。
在SQL Server中,任何字符集的数据库都可以存储任何语言的字符。
不代表拉丁字符集数据不能存储中文,汉字字符集数据库不能存储蒙文(只要操作系统本身支持)。在sqlserver中,nvarchar(或nchar)可以用于任何具有任何字符集(实际上是排序规则)的数据库(或字段),nvarchar(或nchar)可以存储任何非unicode字符。至于排序规则,它们是根据不同字符集支持的不同排序规则人工定义的。
00-1010归类只是指定存储数据的归类(比较)规则,换句话说,归类已经包含字符集的信息。因此,在sqlserver中,不需要关心字符集,只需要关心排序规则。在sqlserver中,只能指定排序规则(不能直接指定字符集)。例如,在截图中,您只能指定排序规则,即字符集。
00-1010如上所述,排序规则依赖于字符集。一个字符集可以有多个排序规则,但一个排序规则只能基于某个字符集。以下是MySQL中排序规则和字符集的对应关系。
MySQL的数据库构建语法相当蹩脚。可以指定字符集和排序规则。如果指定的排序规则低于字符集,则没有问题。如果指定的排序规则不低于字符集,将会报告错误。
例如,在下面的句子中,排序规则utf8_bin是字符集utf8下的排序规则,执行这个语句没有问题。
createdatabasettest _ database 2 charsetutf8 collateutf8 _ bin;例如,在下面的句子中,排序规则latin1_bin不是字符集utf8下的排序规则,执行此语句将会给出一个错误。
createdatabasettest _ database 2 charsetutf8 collaterate 1 _ bin;
以上是字符集和排序规则在sqlserver和MySQL中的一些基本应用,下面我们来谈谈常用排序规则的区别。
SQL Server中的字符集和排序规则
或以上是某个字符集常用的三种排序规则。以下是常见的utf8示例。
utf8 _ genus _ ci不区分大小写,ci是不区分大小写的缩写,即不区分大小写。
Utf8_general_cs区分大小写,cs是区分大小写的缩写,即区分大小写。但是目前MySQL版本不支持类似* * * _ genus _ cs的排序规则,所以改用utf8_bin。
Utf8_bin将字符串中的每个字符存储为二进制数据,区分大小写。
然后,它也区分大小写。utf8_general_cs和utf8_bin有什么区别?
Cs区分大小写是区分大小写的缩写,即区分大小写;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中表现为类似。
感谢各位的阅读,以上就是“SQL Server与MySQL中排序规则与字符集是什么”的内容了,经过本文的学习后,相信大家对SQL Server与MySQL中排序规则与字符集是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/133170.html