我的编程空间,编程开发者的网络收藏夹
学习永远不晚

基于mysql 默认排序规则的坑

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

基于mysql 默认排序规则的坑

mysql默认varchar类型是对大小写不敏感(不区分),如果想要mysql区分大小写需要设置排序规则:

utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写。

utf8_genera_ci不区分大小写,ci为case insensitive的缩写,即大小写不敏感。

utf8_general_cs区分大小写,cs为case sensitive的缩写,即大小写敏感。

用utf8_genera_ci没有区分大小写,导致这个字段的内容区分大小写时出问题,比如作为区分大小写的code或者验证码时就出问题了。

utf8_general_cs这个选项一般没有,所以只能用utf8_bin区分大小写。

1)设置排序规则是可逆的,如果之前设置的排序规则不符合,更换排序规则后,可能出现乱码,当再次恢复原来的排序规则后,乱码即消失。

2)可以将varchar 类型改为 varbinary

3)如果已经使用了默认的排序规则,即utf8_genera_ci,而又想查询结果大小写区分,可以在查询时进行限定:


select binary column from table;  

或者


select column2 from table where binary cloumn;

补充:mysql中的字符集和排序规则

字符集:

字符是各种文字和符号的总称,字符集就是字符的集合。常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等。

计算机要识别各种字符集文字,就需要字符编码。所以有些字符集一个字符是2个字节,有些字符集一个字符是3个字节。

排序规则:举例

utf_bin和utf_general_ci这两者到底有什么区别。

ci是case insensitive, 即"大小写不敏感",a 和 A 会在字符判断中会被当做一样的;

bin是二进制, a 和A 会别区别对待.

utf8_general_ci不区分大小写,这个你在注册用户名和邮箱的时候就要使用。

utf8_general_cs区分大小写,如果用户名和邮箱用这个 就会照成不良后果

utf8_bin:字符串每个字符串用二进制数据编译存储。区分大小写,而且可以存二进制的内容

所以排序规则主要说明了是否大小写敏感和存储方式。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持自学编程网。如有错误或未考虑完全的地方,望不吝赐教。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

基于mysql 默认排序规则的坑

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

基于mysql 默认排序规则的坑

mysql默认varchar类型是对大小写不敏感(不区分),如果想要mysql区分大小写需要设置排序规则: utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写。 utf8_genera_ci不区分大小写,ci为case in
2022-05-26

sqlserver默认排序规则怎么修改

SQL Server默认排序规则是根据数据库的默认排序规则(collation)来进行排序的。如果需要修改默认排序规则,可以通过以下步骤来实现:在SQL Server Management Studio中连接到相应的数据库实例。在“对象资源
sqlserver默认排序规则怎么修改
2024-04-09

oracle数据库默认排序规则是什么

Oracle数据库默认排序规则是二进制排序规则(Binary Sorting Rule),也称为字典排序(Dictionary Sorting)或二进制排序(Binary Sorting)。二进制排序规则是根据字符的二进制编码进行排序,不考
2023-09-11

MySQL的排序规则是什么

MySQL的排序规则是根据指定的排序规则来确定查询结果的排序方式。MySQL支持多种排序规则,包括字母数字顺序、大小写敏感或不敏感、特定语言的排序等。在ORDER BY子句中,可以使用COLLATE子句来指定排序规则。常见的排序规则包括:1
2023-09-21

MySQL默认账号密码的规则是什么?

MySQL数据库的默认账号是"root",默认密码为空,当我们第一次安装MySQL数据库时,会使用默认账号和空密码登录。但是为了加强数据库的安全性,建议在安装完成后立即修改默认密码或创建新的账号,并设置密码。以下是一些常用的方法来修改My
MySQL默认账号密码的规则是什么?
2024-03-02

MySQL 表中的默认排序顺序是什么?

MySQL 表中的默认排序顺序是升序。每当我们使用 ORDER BY 子句对表中的行进行排序时,MySQL 都会按升序给出输出,最小值在前。考虑以下来自名为“student”的表的示例 -mysql> Select * from stude
2023-10-22

mysql怎么查看表的排序规则

要查看 MySQL 表的排序规则,可以通过查询表的元数据信息来获取。你可以使用以下 SQL 查询语句来查看表的排序规则:SHOW TABLE STATUS LIKE table_name;在上面的语句中,将 table_name 替换为你
mysql怎么查看表的排序规则
2024-03-02

mysql中utf8mb4的排序规则是什么

在MySQL中,UTF8MB4排序规则是根据Unicode字符集定义的。Unicode定义了每个字符的排序顺序,根据字符的Unicode码点来确定其在排序中的位置。UTF8MB4字符集支持Unicode字符集中的所有字符,包括emoji表情
mysql中utf8mb4的排序规则是什么
2024-04-09

MySQL字符集排序的规则是什么

MySQL字符集排序规则是根据字符的二进制值来进行排序的。不同的字符集具有不同的排序规则,比如在Latin1字符集中,按照ASCII码的顺序来排序;在UTF-8字符集中,按照Unicode码的顺序来排序。MySQL提供了多种不同的字符集,可
MySQL字符集排序的规则是什么
2024-04-09

mysql和oracle默认排序的方法 - 不指定order by

目录先说结论1. innoDB引擎1.1 创建表,id类型为字符串1.2 插入数据,并查询1.3 创建表,id字段类型为int1.4 插入数据,并http://www.cppcns.com查询1.5 结论2. myISAM引擎2.1 创建表
2022-07-08

我们如何更改解析器用于解析内置函数名称的默认规则?

解析器用于解析内置函数名称的默认规则可以通过启用 IGNORE_SPACE SQL 模式来更改。当我们启用此模式时,解析器放宽了函数名称和后面的括号之间没有空格的要求。例如,启用 IGNORE_SPACE SQL 模式后,以下两个函数调用都
2023-10-22

MySQL建立数据库时字符集和排序规则的选择

文章目录 前言一、字符集?二、Mysql中的字符集1.Unicode与UTF8、UTF8MB4、UTF16、UTF32关系2.Mysql新建数据库时选择哪种字符集呢? 三、Mysql排序规则四、Mysql查询字符集和排序规则常
2023-08-20

编程热搜

目录