字符集&&排序规则

字符集是针对不同语言的字符编码的集合,比如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中排序规则与字符集相关知识的一点总结...相关推荐

  1. SQL Server 与 MySQL 中排序规则与字符集相关知识的一点总结

    字符集&&排序规则 字符集是针对不同语言的字符编码的集合,比如UTF-8字符集,GBK字符集,GB2312字符集等等,不同的字符集使用不同的规则给字符进行编码.排序规则则是在特定字符集 ...

  2. mysql declare 赋值_sql server和mysql变量赋值的区别 以及 MySql Declare(转)

    sql server和mysql都是我们经常用到的数据库系统,下面就为您介绍sql server和mysql变量赋值的区别,希望对您能有所启迪. sql server中变量要先申明后赋值: 局部变量用 ...

  3. sql server转mysql工具下载_SQL Server转换为MySQL工具推荐(Mss2sql)

    SQL Server转换为MySQL工具,用了一下 感觉蛮不错的. 分享上来,同时也以便记录下来以后自用. 工具名称:Mss2sql 来个操作流程: 1.首先下载工具 用户名与密码都是www.linu ...

  4. mysql declare 赋值_sql server和mysql变量赋值的区别 以及 MySql Declare

    sql server和mysql都是我们经常用到的数据库系统,下面就为您介绍sql server和mysql变量赋值的区别,希望对您能有所启迪. sql server中变量要先申明后赋值: 局部变量用 ...

  5. php执行sql内存溢出_SQL Server 2017:SQL排序,溢出,内存和自适应内存授予反馈

    php执行sql内存溢出 This article explores SQL Sort, Spill, Memory and Adaptive Memory Grant Feedback mechan ...

  6. 将mysql表导入sqlserver中_sql server to mysql 导入数据库

    由于工作原因需要将sqlserver 转换为mysql数据库.这期间有朋友帮忙万分感谢.感谢 大概步骤是: 1.配置MYSQL的ODBC,把表结构导过去. 2.然后再配置ACCESS ODBC 3.把 ...

  7. mysql与ms sql server_MS SQL Server和MySQL区别

    1 MySQL支持enum,和set类型,SQL Server不支持 2 MySQL不支持nchar,nvarchar,ntext类型 3 MySQL的递增语句是AUTO_INCREMENT,而MS ...

  8. sql server新增列_SQL Server 2016安装中的新增功能?

    sql server新增列 SQL Server 2016 introduced officially on the 1st of June 2016. It comes with many new ...

  9. sql如何遍历几百万的表_SQL Server遍历表中记录的2种方法(使用表变量和游标)

    SQL Server遍历表一般都要用到游标,SQL Server中可以很容易的用游标实现循环,实现SQL Server遍历表中记录.本文将介绍利用使用表变量和游标实现数据库中表的遍历. 表变量来实现表 ...

  10. 计算机word排序在哪,word里的排序在哪里 word文档中排序在哪儿

    word文档中排序在工具栏的"开始"选项中. 查找及使用步骤: 1.打开一个需要排序的Word文档. 2.在页面上方的工具栏中找到下图做红色标注的排序图标. 3.点击排序图标后,进 ...

最新文章

  1. 算法导论--python--插入排序
  2. JAVA 正则表达式 分组
  3. 如何评估自己对外界认知是否正确?
  4. 关系到了冰点_疫情下半场,如何修复跌至冰点的亲子关系,让自己和家人活出幸福感?...
  5. 用Thread实现socket多线通讯
  6. 关于js获取radio和select的属性并控制
  7. kylin如何支持flink_日均万亿条数据如何处理?爱奇艺实时计算平台这样做
  8. 怎么用html做随机颜色,JavaScript 实现网站标签随机颜色的方法
  9. 构建指定仓库_使用Travis CI自动构建和部署你的GitBook
  10. Mybatis中insert之后返回主键
  11. [转载]for循环的执行顺序
  12. 重写FileUpload控件让它可以显示上传后的文件名
  13. ios开发之CoreData使用
  14. bzoj 4883 [Lydsy1705月赛]棋盘上的守卫——并查集(思路!)
  15. 2017博鳌亚洲青年论坛(香港)顺利召开 中国发展人工智能优势在哪?
  16. arcmap武汉市各个行政区域的森林覆盖率和水体覆盖率
  17. 解剖RISC-V架构(一)
  18. [渝粤教育] 西南科技大学 律师实务 在线考试复习资料2021版(1)
  19. OTFS从零开始(一)
  20. 网页设计技巧:如何做好图片与文字的配合?

热门文章

  1. 三国时代微博(佩服博主琢磨先生太有才了!)
  2. Win7/10/11:去除、恢复软件图标小箭头
  3. Linux安装应用时需要考虑时区问题并修改时区
  4. Hibernate用Query删除数据表中的数据的问题(EntityManager.clear())
  5. 监督学习算法的发展史和它们之间的关系:从文氏图到回归、决策树、支持向量机和人工神经网络...
  6. TYPHOON cms漏洞 简书(ssh篇)
  7. Python编程:判断字符串中是否包含中文
  8. 你绝对不知道 Vue 也有生老病死
  9. PAT考试经验总结(甲乙级均适用)~~想满分的请看这里!~~
  10. msfvenom生成后门程序及利用