2010-06-12 69 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