我想編寫mysql查詢來顯示所有記錄,如果文本字段的值=「全部」或顯示與關鍵字值相似的記錄。我寫了下面的代碼來給出一個想法。在mysql中使用多個關鍵字Like
if (keyword = 'All')
select * from ItemMain
else if (keyword like %itemname%)
select * from ItemMain
我想編寫mysql查詢來顯示所有記錄,如果文本字段的值=「全部」或顯示與關鍵字值相似的記錄。我寫了下面的代碼來給出一個想法。在mysql中使用多個關鍵字Like
if (keyword = 'All')
select * from ItemMain
else if (keyword like %itemname%)
select * from ItemMain
如果itemname是您的列名稱,並且您的搜索字符串參數將替換代碼中的?
。那麼你的說法應該是這個樣子,如果你正在尋找包含您的搜索字符串的所有itemNames的:
SELECT *
FROM ItemMain
WHERE ? = 'All' OR itemname LIKE '%?%'
或者這個,如果你正在尋找一個精確匹配:
SELECT *
FROM ItemMain
WHERE ? = 'All' OR itemname = ?
好吧,假設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
難道你只是或兩個條款? – ethrbunny 2013-03-21 17:01:27
我不知道如何使用MySQL內部查詢。 – amal 2013-03-21 17:05:03
由於你的兩個'then'子句是相同的,所以你不需要else。 – ethrbunny 2013-03-21 17:06:53