2011-06-07 31 views
1

我正在尋找創建SQL查詢的一條建議。我有一個名爲'句子'的VARCHAR(255)字段的MySQL數據庫。正如你可以猜到這個字段包含幾個單詞的句子。我想查詢數據庫以檢索幾個給定單詞的任何組合,但沒有任何其他單詞。創建SQL查詢以使用給定的單詞列表匹配varchar字段

這裏談到一個例子:比方說,我想要得到的「」每一個組合,「」,「」,「」。所以,我想在我的結果的句子:「你喜歡喝茶」,「你喜歡」,或「如茶」或「做茶」,但不是句子「做你喜歡咖啡','你喜歡茶'

當然,我可以創建所有可能的單詞與PHP組合,然後創建正確的SQL查詢。但是我正在尋找一種方法,只使用SQL操作符和給定的單詞,而無需其他預處理。

非常感謝您的幫助。

+1

如果判決*你討厭的茶,會發生什麼樣和咖啡*? – 2011-06-07 08:58:02

+0

如果你正在討論輸入內容,除了'你是否喜歡喝茶'之外,所有建議的結果都應該返回,因爲幻想不在輸入中。如果您的句子是dabatabe中的一行,則不應該返回,因爲咖啡不在輸入中。 – JuCachalot 2011-06-07 09:30:43

+0

忽略我以前的(刪除的)評論。似乎可以通過[sets](http://en.wikipedia.org/wiki/Set_theory)來解釋場景。我在想。 – 2011-06-07 10:10:46

回答

0

,如果你想自動設定搜索「你喜歡」「你喜歡喝茶」但不「你喜歡咖啡」,我認爲這是不可能的,因爲搜索引擎是隻是一串字符。它不知道速滑運動員的肌肉「茶」和「咖啡」除了長度的差異(3比5)和字符集

PS 搜索多個字符串嘗試使用fulltext

0

當您使用

WHERE (field LIKE '%do%%like%%tea%') 

然後你給出的例子工作,但你依賴於給定的順序,所以一個「像茶一樣」的價值將不會被覆蓋。

我猜的解決辦法是形成像查詢:

WHERE (field LIKE '%do%') AND (field LIKE '%like') AND (field LIKE '%tea%') 
相關問題