MySQL查询大小写的区别(mysql查询 大小写)
MySQL在处理查询时对大小写没有固定标准,会根据具体的设置情况来考虑。目前,常见的五种被MySQL支持的字符集编码分别为:utf8_bin、utf8_general_ci、utf8_unicode_ci、utf8_general_mysql500_ci和utf8_unicode_520_ci。
utf8_bin 仅支持单字节字符,不支持多字节字符,如果系统要在同一字段中插入混用多字节字符与单字节字符的情况,则只需要将编码改为utf8_general_ci、utf8_unicode_ci、utf8_general_mysql500_ci和utf8_unicode_520_ci中的任意一种即可。
下面使用SQL语句来演示MySQL查询大小写的区别
// 设置字符集,UTF-8默认编码utf8_bin
SET @CHAR_SETS = 'utf8_bin';
// 建立一张表,用于存放测试数据,插入数据CREATE TABLE IF NOT EXISTS tbl_case (
data VARCHAR(20) CHARACTER SET utf8 COLLATE @CHAR_SETS );
// 插入大写字母INSERT INTO tbl_case VALUES ('ABC');
// 插入小写字母INSERT INTO tbl_case VALUES ('abc');
// 查询字段data中“abc”的数据SELECT * FROM tbl_case WHERE data = 'abc';
// 结果:abc
// 查询字段data中“ABC”的数据SELECT * FROM tbl_case WHERE data = 'ABC';
// 结果:空
// 查询字段data中“ABC”或“abc”的数据SELECT * FROM tbl_case WHERE data = 'ABC' OR data = 'abc';
// 结果:ABC, abc
以上运行结果可以看出,MySQL在字符串比较时,utf8_bin支持的只有单字节,若查询数据中存在多字节字符,则会忽略大小写,只有当字符串100%匹配时,才能得到查询结果。
其他字符集编码中utf8_general_ci、utf8_unicode_ci、utf8_general_mysql500_ci和utf8_unicode_520_ci都不会忽略大小写,而是支持大小写同时使用,当对字符串进行查询时,如果使用这些字符集编码,MySQL会来完全判断大小写是否全部匹配,只有当所有的字母匹配时,才能得到查询结果。
总而言之,MySQL查询大小写的区别取决于系统的字符集编码,只有当字符串的所有字符完全匹配,才能得到查询结果,而utf8_bin支持的只有单字节字符,若存在多字节字符,则会忽略大小写。