据我所知,LIKE运算符应该不区分大小写,但如果我有字符串“ABC Software”,我会得到以下查询:
SELECT ...
FROM ...
WHERE ... LIKE 'AbC Softwa%'
我得到一个零行结果集(如果我大写第二个字母,b,我得到正确的结果)。为什么?以前我有* utf8_bin *作为字符编码,所以我切换到* latin_swedish_ci *,假设二进制匹配是所有错误的来源,但我遇到了同样的问题。
答案 0 :(得分:1)
尝试
SELECT ...
FROM ...
WHERE UPPER(...) LIKE 'ABC SOFTWA%'
答案 1 :(得分:0)
默认情况下,MySQL不区分大小写。
如果您要执行案例 - 敏感搜索,请使用:
SELECT ...
FROM ...
WHERE ... LIKE BINARY 'AbC Softwa%'
如果您的数据库或表默认配置为区分大小写,那么要执行大小写不敏感搜索,您需要执行以下操作:
SELECT ...
FROM ...
WHERE ... COLLATE latin1_swedish_ci LIKE 'AbC Softwa%' COLLATE latin1_swedish_ci
如果您使用的是utf8,请尝试以下操作:
SELECT ...
FROM ...
WHERE ... COLLATE utf8_general_ci LIKE 'AbC Softwa%' COLLATE utf8_general_ci
您可能想要调查数据库区分大小写的原因。
要查看服务器的配置方式,请运行:
SHOW VARIABLES LIKE '%collation%';
要查看表的排序规则,请运行:
SHOW TABLE STATUS;
要查看数据库的默认排序规则:
SHOW CREATE DATABASE dbname;
其中dbname
是数据库的名称。