在mysql中存在着各种utf8编码格式,如下表:
1)utf8_bin
2)utf8_general_ci

utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写。
utf8_genera_ci不区分大小写,ci为case insensitive的缩写,即大小写不敏感。

现在假设执行如下命令:
create table test_bin (
name varchar(32) not null primary key,
age int unsigned not null
) engine = InnoDB COLLATE=utf8_bin;
以上命令能够执行成功。

create table test_ci (
name varchar(32) not null primary key,
age int unsigned not null
) engine = InnoDB COLLATE=utf8_general_ci;

以上命令能够执行成功。
insert into test_bin values('Alice', 18);

以上命令能够执行成功。
insert into test_bin values('alice', 18);

以上命令能够执行成功,因为utf8_bin是以十六进制方式存储数据,两条记录的主键不重复。
insert into test_ci values('Alice', 18);

以上命令能够执行成功。
insert into test_ci values('alice', 20);
以上命令执行失败,因为utf8_general_ci不区分大小写,两条记录的主键重复。

因为校验规则不同,所以使用两种校验规则的非唯一列相同结果的排序结果也会不同。建议使用utf8_bin校验规则

mysql> select * from  test_paixu_ci order by name desc;
+----+------+---------+
| id | name | address |
+----+------+---------+
| 1 | huzj | hunan |
| 12 | huzj | hunan |
| 13 | Huzj | hunan |
| 14 | huzj | hunan |
| 15 | Huzj | hunan |
| 16 | huzj | hunan |
| 17 | HuzJ | hunan |
| 18 | huzj | hunan |
| 19 | HUZJ | hunan |
| 11 | hUzj | hunan |
| 10 | hUZj | hunan |
| 2 | huzJ | hunan |
| 3 | huzj | hunan |
| 4 | huZj | hunan |
| 5 | hUzj | hunan |
| 6 | huZj | hunan |
| 7 | huzj | hunan |
| 8 | huZj | hunan |
| 9 | hUzj | hunan |
| 20 | hUzj | hunan |
+----+------+---------+
20 rows in set (0.00 sec) mysql> select * from test_paixu_bin order by name desc;
+----+------+---------+
| id | name | address |
+----+------+---------+
| 1 | huzj | hunan |
| 14 | huzj | hunan |
| 16 | huzj | hunan |
| 7 | huzj | hunan |
| 12 | huzj | hunan |
| 18 | huzj | hunan |
| 3 | huzj | hunan |
| 2 | huzJ | hunan |
| 4 | huZj | hunan |
| 8 | huZj | hunan |
| 6 | huZj | hunan |
| 11 | hUzj | hunan |
| 9 | hUzj | hunan |
| 5 | hUzj | hunan |
| 20 | hUzj | hunan |
| 10 | hUZj | hunan |
| 13 | Huzj | hunan |
| 15 | Huzj | hunan |
| 17 | HuzJ | hunan |
| 19 | HUZJ | hunan |
+----+------+---------+
20 rows in set (0.00 sec)

MySQL中校验规则(collation)的选取对实际数据筛选的影响的更多相关文章

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

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

  2. MySQL中获取天、周、月等数据

    MySQL中获取天.周.月等数据 1.今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 2.昨天 SELECT * FROM 表名 ...

  3. mysql中增加某一时间段内的时间数据(包含:时间、年、月、日、第几周、季度)

    创建表dim_date: create table `dim_date` ( `year` int (20), `month` int (20), `day` int (20), `week` int ...

  4. mysql中参数low_case_table_name的使用?不同参数值的设置有什么影响?

    需求描述: 今天一个同事问,在mysql中,默认的表名是大小写区分的吗,默认是什么设置, 如果要设置成大小写不区分的改怎么设置,是否需要进行重启.然后就进行了查询, 对于lower_case_tabl ...

  5. mysql中删除重复记录,并保留重复数据中的一条数据的SQL语句

    正好想写一条删除重复语句并保留一条数据的SQL,网上查了一部分资料写的很详细,但还是在这里写下自己的理解,以遍后续学习 .如下: 表字段和数据: SQL语句: [sql] view plain cop ...

  6. mysql中把空值放在最后,有值的数据放在前面

    order by column is null,column; 如果:order by column,则column中空值的数据放在最前面,有数据的放在后面

  7. [译] Pandas中根据列的值选取多行数据

    # 选取等于某些值的行记录 用 == df.loc[df['column_name'] == some_value] # 选取某列是否是某一类型的数值 用 isin df.loc[df['column ...

  8. MySQL中使用replace into语句批量更新表数据

    作为示例,我们在这里使用名为testdb的数据库,并且在其中创建两张一模一样的表: drop table if exists test_table_1; create table test_table ...

  9. pandas中根据列的值选取多行数据

    # 选取等于某些值的行记录 用 == df.loc[df['column_name'] == some_value] # 选取某列是否是某一类型的数值 用 isin df.loc[df['column ...

随机推荐

  1. 200. Spring Boot JNDI:在Tomcat中怎么玩JNDI?

      [视频&交流平台] àSpringBoot视频:http://t.cn/R3QepWG à SpringCloud视频:http://t.cn/R3QeRZc à Spring Boot源 ...

  2. Titanic缺失数值处理 & 存活率预测

    1.  kaggle泰坦尼克数据titanic完整下载,原作者良心分享 https://download.csdn.net/download/lansui7312/9936840 2. 缺失值处理 # ...

  3. Linq(高级查询)

    一.条件查 public List<Users> ss(string ids) { List<Users> ulist=new List<Users>(); 声明使 ...

  4. Tesseract-OCR的简单使用与训练

    Tesseract,一款由HP实验室开发由Google维护的开源OCR(Optical Character Recognition , 光学字符识别)引擎,与Microsoft Office Docu ...

  5. js 模拟css3 动画1

    <html> <head> <title> javaScript缓动入门 </title> </head> <body> < ...

  6. 定时器和函数的使用初级------移动一个div元素

    在页面的动画效果中,经常有看到某个小块从一个地方移动到另一个地方的现象,现在,我们也来自己做一个这样的小动画,涉及到的基础包括定时器的使用和函数的使用 例如,我们要实现一个小方块从左面移动到右面,然后 ...

  7. Java遍历树(深度优先+广度优先)

    在编程生活中,我们总会遇见树性结构,这几天刚好需要对树形结构操作,就记录下自己的操作方式以及过程.现在假设有一颗这样树,(是不是二叉树都没关系,原理都是一样的) 1.深度优先 英文缩写为DFS即Dep ...

  8. PHP对接微信支付采坑

    第一次做PHP商城项目对接微信支付接口,踩了N次坑,这也不对,那也不对,搞了很久,查了一些资料,终于实现了支付功能,小小总结一下,万一下次遇到就不用到处找资料了. 微信扫码支付 前期准备: 1.微信公 ...

  9. go相关知识点

    后续开发go相关, 环境搭建 go env //查看环境所有 go只有三种引用类型 slice(切片). map(字典). channel(管道): go的类型的浅记忆 4仲类型bool,字符串,数字 ...

  10. tkinter窗口居中方法

    tkinter窗口居中 from tkinter import * class MyFrm(Frame): def __init__(self, master): self.root=master s ...