【问题标题】:MySQL search problem to find lowercase and uppercase letters at the sametimeMySQL搜索问题同时查找小写和大写字母
【发布时间】:2011-09-24 16:47:00
【问题描述】:

我有一个表格,用户可以在其中输入小写(例如: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 查询不区分大小写? 任何人都请帮忙...

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    我认为this link 可以帮助您了解您的问题...
    无论如何,您可以通过以下方式解决您的问题:

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        我会试试这个:

        where username COLLATE latin1_swedish_ci = '%$q'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-09-24
          • 1970-01-01
          • 2013-02-04
          • 2023-03-03
          相关资源
          最近更新 更多