2010-04-09 80 views
1

更新:我已經想出了一種使用動態sql的形式來解決此問題的方法,非常感謝您的幫助。SQL全文索引問題

嗨,有什麼我需要使用全文索引來完成。這是它:

事情的事實是,當我運行一個查詢(存儲過程),看起來像(具有一個參數(@name)明顯定義上面(此處未顯示),此參數是通過一個asp.net頁面發送到存儲過程,從用戶輸入):

SELECT

名稱

FROMdbo.UsersTable

WHERE

FREETEXT(Name,@name)

那麼,事實是這樣的查詢將返回值,如果參數@ name的值是Joe,並且說有10個記錄的名稱與喬在他們身上,但如果@名的價值只是喬,那麼它什麼都不會返回,這就是問題所在。假設這個表中還有其他記錄中有Jo的記錄,例如Jole或John。

所以真正的問題是,我怎樣才能讓它返回不是完整的單詞或短語,而僅僅是來自單詞/短語的一部分(就像我上面所說的)?就像FREETEXT(Name,@ name *)一樣,不允許將它用作查詢,但是,您會明白這一點。

有沒有辦法做到這一點?我確定必須有,我需要弄清楚。

感謝您的任何幫助。

回答

2

全文搜索是真正應該被用作基於整個單詞的自然語言搜索,但是你可以用它來尋找的形式使用CONTAINS帶有圖案的話後綴(不子)"Jo*"

SELECT Name FROM dbo.UsersTable WHERE CONTAINS(Name, '"' + @NAME + '*"') 
+0

這與使用WHERE Name LIKE @ NAME'有什麼不同? – ashes999 2012-02-28 15:43:25

+1

@ ashes999 LIKE不會使用全文索引,CONTAINS()將 – 2012-02-28 15:47:55

+0

謝謝@AlexK,我認爲可能是這樣。 – ashes999 2012-02-28 19:05:27