【问题标题】:not case sensitive query in mysqlmysql中不区分大小写的查询
【发布时间】:2011-03-03 00:18:07
【问题描述】:

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

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

如果我的表中有一个名称,例如 Book,并且我在搜索框中输入 book,它将不会显示 Book

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

【问题讨论】:

标签: php mysql


【解决方案1】:

您需要在查询中附加 COLLATE utf8_general_ci 之类的内容。 (_ci 后缀表示不区分大小写。)

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

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

【讨论】:

  • 您的数据库可能已经设置为不区分大小写的排序规则。
【解决方案2】:

你可以使用LOWER()函数

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

【讨论】:

  • 这行得通。但是,如果您将列名作为 LOWER() 的参数提及,您将不允许数据库使用索引,因此它可能会很慢。
  • 嗯,不知道。好提示
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
  • 1970-01-01
  • 2011-12-13
  • 1970-01-01
  • 2012-10-05
相关资源
最近更新 更多