每种字符集对应若干种比较规则, 且每种字符集都有一种默认的比较规则。
通过 SHOW COLLATION 命令的结果中的 Default 列的值为 YES 的就是该字符集的默认比较规则, 对于 utf8 字符集,默认的比较规则就是 utf8_general_ci. ( ci 表示不区分大小写 )
- utf8_general_ci 表示不区分大小写
- utf8_general_cs 表示区分大小写
上面说到,一种字符集对应多个比较规则,常见的比较规则 utf8_unicode_ci 和 utf8_general_ci 的区别:
- 对中英文来说没有实质的差别。
- utf8_general_ci: 校对速度快,但准确度稍差。
- utf8_unicode_ci: 准确度高,但校对速度稍慢。
- 若数据库中有德语、法语或者俄语需求,需使用 utf8_unicode_ci。其他情况用 utf8_general_ci 即可。
MySQL查询时区分大小写
上面说到,MySQL 默认是不区分大小写的
,平时也很少会考虑数据存储时是否区分字符串的大小写。不过,有时候还是会明确要求某张表的指定字段在查询时需要区分大小写。
那么如何实现呢?
- 方式1:在建表的时候,就设置比较规则区分大小写。但个人认为最好不要这么做。一般在设计数据库时并不能很明确的知道哪个字段需要区分,都是在开发一段时间后,突然提出的。具有难以预料性。
- 方式2:是在执行查询 SQL 时添加关键字
binary
可以区分大小写。
-- 查询结果是相同的,不分区大小写 SELECT * FROM U WHERE name LIKE 'a%'; SELECT * FROM U WHERE name LIKE 'A%'; -- 查询结果是不同的,区分大小写 SELECT * FROM U WHERE binary name LIKE 'a%'; SELECT * FROM U WHERE binary name LIKE 'A%';
到此这篇关于MySQL 中字符集详细介绍的文章就介绍到这了,更多相关MySQL 字符集内容请搜索
更多SQL内容来自木庄网络博客