我四处看了看,没有找到我要找的东西,所以就这样了。

SELECT * FROM trees WHERE trees.`title` LIKE  '%elm%'

这很好,但如果树的名字是Elm或Elm等…

我如何使SQL不区分大小写为这个通配符搜索?

我使用MySQL 5和Apache。


当前回答

大小写敏感性在列/表/数据库排序规则设置中定义。指定排序规则下的查询方法如下:

SELECT *
FROM trees
WHERE trees.`title` LIKE '%elm%' COLLATE utf8_general_ci

例如。

(将utf8_general_ci替换为任何您认为有用的排序规则)。_ci代表不区分大小写。

其他回答

我总是用lower来解决这个问题:

SELECT * FROM trees WHERE LOWER( trees.title ) LIKE  '%elm%'

限制使用ILIKE

SELECT * FROM trees WHERE trees.`title` ILIKE '%elm%';

这对我很管用!!

必须为表设置正确的编码和排序规则。

表编码必须反映实际的数据编码。你的数据编码是什么?

要查看表编码,可以运行查询SHOW CREATE table tablename

这是一个简单的LIKE查询的例子:

SELECT * FROM <table> WHERE <key> LIKE '%<searchpattern>%'

现在,使用LOWER() func区分大小写:

SELECT * FROM <table> WHERE LOWER(<key>) LIKE LOWER('%<searchpattern>%')

在mysql 5.5中,操作符是不敏感的…如果你的值是elm或elm或elm或其他,你使用'%elm%',它会列出所有匹配的值。

我不能说早期版本的mysql。

如果你在Oracle中,work是区分大小写的,所以如果你输入'%elm%',它只会显示这个,忽略大写。

很奇怪,但事实就是这样的:)