2011-11-17 175 views
4

我嘗試使用PHP,搜索工作正常搜索MySQL數據庫,但是我正在尋找一些幫助使用通配符:MYSQL搜索/通配符

數據領域(模型)我正在尋找的是: 「A4」(215個結果)

我的搜索字符串是:

SELECT * FROM `temp_comp`.`mvl` WHERE `Model` LIKE '%A4 Avant%' 

有沒有辦法我仍然可以搜索「A4先鋒」,但是這將返回包含「A4」的任何字段或「前衛」

搜索條件取自一個csv文件,所以我想嘗試做到這一點,而不必先將這兩個單詞分開並搜索'A4'和/或'Avant',我嘗試了以下方法但沒有得到結果:

SELECT * FROM `temp_comp`.`mvl` WHERE `Model` LIKE '%A4%Avant%' 

正如你可能已經猜到這是不是我正常的領域,所以任何幫助將非常感激。

回答

6
SELECT * FROM temp_comp.mvl WHERE (Model LIKE '%A4%') OR (Model LIKE '%Avant%') 

如果你想避免分裂的測試,你可以使用正則表達式:

SELECT * FROM temp_comp.mvl WHERE Model REGEXP 'A4|Avant' <<-- Either '%A4% or %Avant% 
SELECT * FROM temp_comp.mvl WHERE Model REGEXP 'A4*Avant' <<-- '%A4%Avant% 

reference

+0

認爲他想要或者 –

+0

嗨,感謝您的回覆,但我正在尋找一種方法來搜索這個沒有分裂這兩個詞如果這是可能的。 – user1051894

+0

@ user1051894,當然,請使用正則表達式 – Johan

0

MySQL沒有內置的方式來分割字符串一個問題。事先將它們拆分,然後將n個謂詞添加到where子句中並不重要。

SELECT * FROM `temp_comp`.`mvl` 
WHERE `Model` LIKE '%A4%' OR `Model` LIKE '%Avant%'; 
+0

嗨吉姆,這是我擔心,但感謝您花時間讓我知道。 親切的問候,大衛 – user1051894

0

下面介紹如何實現此目的。

修改您的查詢是這樣的:

SELECT * FROM `temp_comp`.`mvl` WHERE `Model` LIKE '%A4%' AND Model LIKE '%Avant%' 

上面的例子將尋找這樣的方式,他們都應該出現在記錄中查詢的搜索項的元素。如果您想用任一搜索詞搜索記錄,則可以用替換單詞,它可以完成這項工作。

理想情況下,你會遵循以下步驟爲查詢準備:

  1. 以輸入要搜索的字符串。
  2. 將它拆分爲空格,以便有一組單詞
  3. 循環訪問數組並構建搜索字符串。
  4. 在查詢中使用搜索字符串。
+0

嗨itsols,謝謝你剎車。我確實看過這個選項,但是我認爲如果有一個mysql選項可以搜索,我可能會爲自己做更多的工作。但這裏的答覆已經清除了這一點。謝謝你的時間。 – user1051894