MySQL:如何执行不区分大小写的查询

时间:2012-08-02 21:38:25

标签: mysql

据我所知,LIKE运算符应该不区分大小写,但如果我有字符串“ABC Software”,我会得到以下查询:

SELECT ...
FROM ...
WHERE ... LIKE 'AbC Softwa%'

我得到一个零行结果集(如果我大写第二个字母,b,我得到正确的结果)。为什么?以前我有* utf8_bin *作为字符编码,所以我切换到* latin_swedish_ci *,假设二进制匹配是所有错误的来源,但我遇到了同样的问题。

2 个答案:

答案 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是数据库的名称。