2011-02-08 100 views
1

我們正在嘗試做的是創建一個「Any Word」類型匹配的文本搜索。該表被設置例如這樣的:如何創建「Any Word」搜索?

ID | Keyword 
------------- 
1 | alpha, beta, charlie 
2 | bravo, delta, echo 
3 | alpha, delta, foxtrot 

,我們曾經嘗試到目前爲止是這樣的查詢:

SELECT keyword FROM KeywordTest 
     WHERE keyword 
IN (select Value FRom split('alpha, beta, charlie',',')) 

我們想過會發生的是,我們會得到兩個結果回來,一個用於ID 1,另一個用於ID 3.但是,這不是我們只得到ID 1的情況。

我在做什麼錯誤,我怎樣才能調整這個查詢來爲'Any Words '作爲參數傳入。

謝謝!

回答

3

問題出在哪裏,因爲在IN鍵不在選擇,關鍵字是LIKE select。您可以嘗試使用INNER JOIN:

SELECT keyword 
FROM KeywordTest a inner join 
     split('alpha, beta, charlie',',') b on a.keyword like '%'+Value+'%' 
+0

這幾乎就是我們正在尋找的東西。在我們的測試數據中,我們發現我們的點擊帶來了'alpha'和'charlie'的結果。在我們的解決方案中爲查詢工作拋出一個獨特的東西。謝謝!。 – Chris 2011-02-08 21:09:12

1

我其實剛剛解決了一個非常類似的問題。

我相信你想看看是什麼關於SQL的LIKE關鍵字。

SELECT keyword FROM KeywordTest 
     WHERE keyword LIKE %'alpha'% 

請注意,您可能必須按分隔符進行某種拆分才能將搜索結果全部放入LIKE查詢中。 (如果你需要的話,我可以提供幫助)

另外,請記住%是通配符。在搜索標準之前和之後放置%,將在任何上下文中找到該字符串。

如果我們已經把WHERE關鍵字LIKE'alpha'%,我們只會找到以alpha開頭的結果。