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

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

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

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

我使用MySQL 5和Apache。


当前回答

SELECT name 
       FROM gallery 
       WHERE CONVERT(name USING utf8) LIKE _utf8 '%$q%' 
       GROUP BY name COLLATE utf8_general_ci LIMIT 5 

其他回答

当我想开发不敏感的大小写搜索时,我总是在进行比较之前将每个字符串转换为小写

您不需要更改任何表。只需使用以下查询,在实际的SELECT查询之前,你想使用通配符:

    set names `utf8`;
    SET COLLATION_CONNECTION=utf8_general_ci;
    SET CHARACTER_SET_CLIENT=utf8;
    SET CHARACTER_SET_RESULTS=utf8;

简单地使用:

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

或使用

"SELECT * FROM `trees` WHERE LCASE(trees.`title`) LIKE  '%elm%'";

两个函数的工作原理是一样的

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

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

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

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

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

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

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