使用mysql Like多个关键字

时间:2013-03-21 16:59:22

标签: mysql if-statement sql-like

我想编写mysql查询来显示所有记录,如果文本字段值="全部"或者显示类似于关键字值的记录。我在下面写了代码,只是为了给出一个想法。

if (keyword = 'All' )
    select * from ItemMain
else if (keyword like %itemname%)
    select * from ItemMain   

2 个答案:

答案 0 :(得分:0)

如果itemname是您的列名,则您的搜索字符串参数将替换代码中的?。如果您要搜索包含搜索字符串的所有项目名,那么您的语句应该如下所示:

SELECT   * 
FROM     ItemMain
WHERE    ? = 'All' OR itemname LIKE '%?%'

或者如果您正在寻找完全匹配的话:

SELECT   * 
FROM     ItemMain
WHERE    ? = 'All' OR itemname = ?

答案 1 :(得分:0)

好吧,假设PHP是前端语言,你可以将它全部放在一个这样的查询中(原谅花括号;我不确定它们是否需要它们,所以我倾向于结束 - 使用他们):

$query = <<< ENDSQL
SELECT *
  FROM ItemMain
  WHERE ('{$keyword}' = 'All') OR (your_textfield like '%{$keyword}%')
ENDSQL;
... execute the query

但我真的应该接受@cjg的建议并使用两个不同的查询:

$query = "";
if ($keyword == 'All') {
  $query = "SELECT * FROM ItemMain";
} else {
  $query = "SELECT * FROM ItemMain WHERE your_textfield LIKE '%{$keyword}%'";
}
... execute the query