MySQL搜索问题同时找到小写和大写字母

时间:2011-09-24 16:47:00

标签: php mysql

我有一个表,用户以小写字母(例如:arup)和大写字母(例如:Arup)或两者(例如:aRuP)输入用户名。

但我现在的问题是,如果我搜索数据库以显示像%Arup这样的成员用户名,那么如果没有完全找到,mysql会返回空结果。

 id    |   username   |   name    |   sex
  1         arUp         Arup Sarma   Male

<?php
$q=strip_tags($_POST['user']); /// eg. Arup
$qry=mysql_fetch_row(mysql_query("SELECT id,name,sex FROM membertable WHERE username='%$q'"));
echo $qry['0']."<br>".$qry['1']."<br>".$qry['2'];
?>
/// Now above sql query will return zero result as there is no username in the form of arUp.

如何使SQL查询不区分大小写? 有人请帮忙......

3 个答案:

答案 0 :(得分:5)

我认为this link有助于理解您的问题...... 无论如何,你可以用这个来解决你的问题:

SELECT * FROM your_table 
WHERE LOWER(username) LIKE '%arup'

答案 1 :(得分:2)

您可以在比较的两边调用UPPER

SELECT id,name,sex FROM membertable WHERE UPPER(username) = UPPER('%$q')

根据官方手册,“正确的方式”是choosing a case-insensitive collation,可能更快,但也更复杂。

答案 2 :(得分:0)

基于此: http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html

我试试这个:

where username COLLATE latin1_swedish_ci = '%$q'