MySQL中大小写不敏感的查询

5

我需要查询我的数据库并找到结果:

mysql_query("select * from ".ALU_TABLE." where username like '%$q%' or name like '%$q%'");

如果我的表中有一个名为“Book”的名称,我在搜索框中输入“book”,它将不会显示“Book”。
我需要查询我的数据库,使其不区分大小写。

另外:http://stackoverflow.com/search?q=mysql+case+insensitive - OMG Ponies
2个回答

4
您可以使用 LOWER() 函数。
... WHERE LOWER(username) LIKE blabl OR LOWER(name) LIKE asdasd

2
这个可以工作。但是如果你将列名作为LOWER()函数的参数提及,那么它将不允许数据库使用索引,因此速度可能会相当慢。 - O. Jones

3
你需要在查询中添加类似于COLLATE utf8_general_ci的内容。(_ci后缀表示不区分大小写。)请参考文档:9.1.7.1. 在SQL语句中使用COLLATE

使用COLLATE子句,您可以覆盖比较的默认排序规则。COLLATE可以在SQL语句的各个部分中使用。


你的数据库可能已经设置为不区分大小写的排序规则。 - O. Jones

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接