我有麻煩與此select語句:如何在mysql select語句中使用OR LIKE?
Select * from table where row != '' and row2 like '%test%' or like '%test2%';
的「或類似的」部分不工作,我猜我使用它不正確。
我有麻煩與此select語句:如何在mysql select語句中使用OR LIKE?
Select * from table where row != '' and row2 like '%test%' or like '%test2%';
的「或類似的」部分不工作,我猜我使用它不正確。
你會做這樣的事情:
SELECT * FROM table
WHERE row != '' AND (row2 like '%test%' OR row2 like '%test2%')
每個或/與在一件事情上進行操作。正如其他人所指出的那樣,操作順序很重要。您應該使用()
對錶達式進行分組,以便首先對其進行評估。
謝謝vcsjones,作品 – Dave 2011-05-26 19:33:34
但他的問題有一個缺失的條件?我正在談論'row!='''條件。 – RRStoyanov 2011-05-26 19:36:23
@RRStoyanov這只是一個如何在同一列上做兩個喜歡的例子。我會更新答案以包含'row!='''條件。 – vcsjones 2011-05-26 19:38:29
Where子句與您正在查詢的表中某行的列關聯,而不是「行」本身。所以,如果處理一個簡單的客戶表,您可以應用之類的查詢像
select
lastname,
firstname,
address
from
customers
where
firstname like 'Bill%'
OR lastname like '%mar%'
將返回其中第一個名字會專門與「條例」啓動任何名字,無論是什麼結尾(通過「% 「通配符)
OR
姓氏的值爲‘三月’中的最後名稱的任何地方,如‘馬庫斯’,‘塔瑪拉’,‘奧馬爾’......
每個」 LIKE 「適用的條款是基於你有興趣再次比較的專欄牛逼....如果你想爲你每次都要寫一列測試多個值...
where
firstname like 'Bill%'
or firstname like 'John%'
or firstname like '%any%'
你錯過第二個像「2行」,而且您的查詢像現在工作這樣
Select * from table where row != '' and row2 like '%test%';
Select * from table where row2 like '%test2%';
如果你需要它這樣的,這是確定的,但我想你想在這兩個搜索行的!=「」?
如果是這樣的話,比你的查詢應該是這樣的:
Select * from table where row != '' and (row2 like '%test%' or row2 like '%test2%');
通知括號。
有一個運算符優先級的問題 - 使用括號來解決這個問題:
SELECT *
FROM table
WHERE row != ''
AND (row2 LIKE '%test%' OR row2 LIKE '%test2%');
你也缺少在邏輯與的條件,第二個「2行」。
當然,示例中的第二個LIKE條件不會返回第一個沒有的行(因爲包含'test2'的每一行也包含'test'),但我們可以認爲這是過度簡化爲了這個問題的目的。
嘿戴夫我編輯了你的問題的PHP和編程語言標籤,因爲它只是關於MySQL。 – yannis 2011-05-26 20:21:23