2016-09-07 77 views
1

我有一個包含大量文本列的表,並且需要能夠使用搜索項來查詢表。對於單而言,這是簡單的...對多個輸入的SQL查詢

SELECT * FROM things WHERE @searchTerm in (column1, column2...columnX) 

不過,有時我需要多個詞搜索超過在一個查詢中,像...

SELECT * FROM things WHERE @searchTerms in (column1, column2...columnX) 

...其中@searchTerms是一組值,而不是一個單一的值。有沒有辦法在SQL中模擬這種行爲?

更新: 謝謝@Tedo G.,不幸的是我需要查詢在不同的術語之間使用AND。要做到這一點,我添加了一個改變你的分組結果,並確保每個不同的結果計數的項數相匹配...

SELECT 
    * 
FROM 
    things AS A INNER JOIN @searchTerms AS B 
      ON B.[FieldName] IN (column1, column2...columnX) 
    GROUP BY column1, column2...columnX 
    HAVING count(column1) = @numberOfSearchTerms 

...這工作,但有沒有更好的辦法?

+1

你或許應該看看你的數據庫的全文搜索功能使用。 –

+0

這可能是我要做的,但我想知道是否有辦法在不使用全文搜索的情況下執行此操作,如果可能的話 – GoatInTheMachine

+1

將@searchTerms值置於臨時表中? – jarlh

回答

2

另一種方式來實現這一目標是做一個表變量,並與您的搜索字詞填入值,然後加入它:

SELECT 
    * 
FROM 
    things AS A INNER JOIN @searchTerms AS B 
      ON B.[FieldName] IN (column1, column2...columnX) 
+0

謝謝!這有效,但我需要查詢在術語之間使用「AND」而不是「OR」,我已經更新了我的問題 – GoatInTheMachine