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支持的只有单字节字符,若存在多字节字符,则会忽略大小写。


数据运维技术 » MySQL查询大小写的区别(mysql查询 大小写)