在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. Solr——配置IK分词器

    首先需要的准备好jdk1.8和tomcat8以及ik分词器(ik分词器是5.x的版本,和solr4.10搭配的版本不一样,虽然是5.x的版本但是也是能使用在solr7.2版本上的) 分享链接https ...

  2. ORA-00911: invalid character 包含中文报错

    SQL在pl下正常执行在vs里报错ORA-00911: invalid character. 1.检查SQL末尾是否含有";" 去掉 2.sql包含中文报错 string sql ...

  3. Requests将verify设置为False后取消警告的方式

    方法一 import requests import urllib3 urllib3.disable_warnings() resp = requests.get('https://www.***.c ...

  4. 关于Haclon使用GPU加速的代码实例

    关于Haclon使用GPU加速的代码实例 read_image(Image, 'T20170902014819_58_2_1.bmp') *没有加加速并行处理 count_seconds(T1) to ...

  5. C++ 日志生成 DLL

    示例: #define log_dbg(format,args...) \        printf("[DBG] [%s: %s() line:%d]: "format ,__ ...

  6. 使用jQuery+huandlebars遍历数组嵌套数组

    兼容ie8(很实用,复制过来,仅供技术参考,更详细内容请看源地址:http://www.cnblogs.com/iyangyuan/archive/2013/12/12/3471227.html) & ...

  7. ionic+cordova填坑

    1.命令行更新 cordova,ionic.nodejs ,npm,bower等到新版本,不要在vs中更新 2.程序突然白屏 因为拷贝其他程序到js中,乱码 :a模拟器打开 f12看控制台错误解决 3 ...

  8. HTTPS SSL/TLS协议

    要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识.1. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义2. 大致了解 HTTP 和 TCP 的关系(尤其是“短连接”VS“长连接 ...

  9. 初学c# -- 学习笔记(9) 关于SQL2008

    在做一个局域网的类似网盘的学习练习,服务端差不多了,在改bug.用vlc的dll做的全格式视频.音频预览在线播放下载等等. 在做服务端也遇到了一些问题,走了好多弯路. 开始把上传的视频.音频.图像.文 ...

  10. 用归并排序或树状数组求逆序对数量 poj2299

    题目链接:https://vjudge.net/problem/POJ-2299 推荐讲解树状数组的博客:https://blog.csdn.net/int64ago/article/details/ ...