2010-06-12 56 views
5

我需要查询我的数据库,查找结果:不区分大小写的查询在MySQL

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

,如果我在我的表,如书有一个名字和我进入书搜索框就不会显示该图书

我需要查询我的数据库不区分大小写。

+0

可能重复([案例SQL LIKE通配符声明不敏感] http://stackoverflow.com/questions/2876789/case-insensitive-for-sql -like-wildcard-statement) – 2010-06-12 17:07:04

+0

另请参见:http://stackoverflow.com/search?q=mysql+case+insensitive – 2010-06-12 17:07:39

回答

4

可以使用LOWER()功能

... WHERE LOWER(username) LIKE blabl OR LOWER(name) LIKE asdasd 
+2

这工作。但是,如果将列名作为参数提交给LOWER(),则不会允许db使用索引,因此它可能非常缓慢。 – 2010-06-12 14:12:03

+0

嗯,不知道。好的提示 – 2010-06-12 14:17:01

3

您需要为查询添加类似COLLATE utf8_general_ci的内容。 (该_ci后缀代表不区分大小写)。

看一看文档:9.1.7.1. Using COLLATE in SQL Statements

随着COLLATE子句,您可以覆盖任何默认排序规则是一个比较。 COLLATE可用于SQL语句的各个部分。

+0

您的数据库可能已设置为不区分大小写排序规则。 – 2010-06-12 14:10:47