mysql 汉字笔画排序规则_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排序规则下,即便是区分了大小写,但是某些西欧的字符和拉丁字符是不区分的,比如ä=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中表现为类似。
以上。
mysql 汉字笔画排序规则_SQL Server 与MySQL中排序规则与字符集相关知识的一点总结...相关推荐
- SQL Server 与 MySQL 中排序规则与字符集相关知识的一点总结
字符集&&排序规则 字符集是针对不同语言的字符编码的集合,比如UTF-8字符集,GBK字符集,GB2312字符集等等,不同的字符集使用不同的规则给字符进行编码.排序规则则是在特定字符集 ...
- mysql declare 赋值_sql server和mysql变量赋值的区别 以及 MySql Declare(转)
sql server和mysql都是我们经常用到的数据库系统,下面就为您介绍sql server和mysql变量赋值的区别,希望对您能有所启迪. sql server中变量要先申明后赋值: 局部变量用 ...
- sql server转mysql工具下载_SQL Server转换为MySQL工具推荐(Mss2sql)
SQL Server转换为MySQL工具,用了一下 感觉蛮不错的. 分享上来,同时也以便记录下来以后自用. 工具名称:Mss2sql 来个操作流程: 1.首先下载工具 用户名与密码都是www.linu ...
- mysql declare 赋值_sql server和mysql变量赋值的区别 以及 MySql Declare
sql server和mysql都是我们经常用到的数据库系统,下面就为您介绍sql server和mysql变量赋值的区别,希望对您能有所启迪. sql server中变量要先申明后赋值: 局部变量用 ...
- php执行sql内存溢出_SQL Server 2017:SQL排序,溢出,内存和自适应内存授予反馈
php执行sql内存溢出 This article explores SQL Sort, Spill, Memory and Adaptive Memory Grant Feedback mechan ...
- 将mysql表导入sqlserver中_sql server to mysql 导入数据库
由于工作原因需要将sqlserver 转换为mysql数据库.这期间有朋友帮忙万分感谢.感谢 大概步骤是: 1.配置MYSQL的ODBC,把表结构导过去. 2.然后再配置ACCESS ODBC 3.把 ...
- mysql与ms sql server_MS SQL Server和MySQL区别
1 MySQL支持enum,和set类型,SQL Server不支持 2 MySQL不支持nchar,nvarchar,ntext类型 3 MySQL的递增语句是AUTO_INCREMENT,而MS ...
- sql server新增列_SQL Server 2016安装中的新增功能?
sql server新增列 SQL Server 2016 introduced officially on the 1st of June 2016. It comes with many new ...
- sql如何遍历几百万的表_SQL Server遍历表中记录的2种方法(使用表变量和游标)
SQL Server遍历表一般都要用到游标,SQL Server中可以很容易的用游标实现循环,实现SQL Server遍历表中记录.本文将介绍利用使用表变量和游标实现数据库中表的遍历. 表变量来实现表 ...
- 计算机word排序在哪,word里的排序在哪里 word文档中排序在哪儿
word文档中排序在工具栏的"开始"选项中. 查找及使用步骤: 1.打开一个需要排序的Word文档. 2.在页面上方的工具栏中找到下图做红色标注的排序图标. 3.点击排序图标后,进 ...
最新文章
- 算法导论--python--插入排序
- JAVA 正则表达式 分组
- 如何评估自己对外界认知是否正确?
- 关系到了冰点_疫情下半场,如何修复跌至冰点的亲子关系,让自己和家人活出幸福感?...
- 用Thread实现socket多线通讯
- 关于js获取radio和select的属性并控制
- kylin如何支持flink_日均万亿条数据如何处理?爱奇艺实时计算平台这样做
- 怎么用html做随机颜色,JavaScript 实现网站标签随机颜色的方法
- 构建指定仓库_使用Travis CI自动构建和部署你的GitBook
- Mybatis中insert之后返回主键
- [转载]for循环的执行顺序
- 重写FileUpload控件让它可以显示上传后的文件名
- ios开发之CoreData使用
- bzoj 4883 [Lydsy1705月赛]棋盘上的守卫——并查集(思路!)
- 2017博鳌亚洲青年论坛(香港)顺利召开 中国发展人工智能优势在哪?
- arcmap武汉市各个行政区域的森林覆盖率和水体覆盖率
- 解剖RISC-V架构(一)
- [渝粤教育] 西南科技大学 律师实务 在线考试复习资料2021版(1)
- OTFS从零开始(一)
- 网页设计技巧:如何做好图片与文字的配合?
热门文章
- 三国时代微博(佩服博主琢磨先生太有才了!)
- Win7/10/11:去除、恢复软件图标小箭头
- Linux安装应用时需要考虑时区问题并修改时区
- Hibernate用Query删除数据表中的数据的问题(EntityManager.clear())
- 监督学习算法的发展史和它们之间的关系:从文氏图到回归、决策树、支持向量机和人工神经网络...
- TYPHOON cms漏洞 简书(ssh篇)
- Python编程:判断字符串中是否包含中文
- 你绝对不知道 Vue 也有生老病死
- PAT考试经验总结(甲乙级均适用)~~想满分的请看这里!~~
- msfvenom生成后门程序及利用