2011-03-09 122 views
0

我的全文搜索有什麼問題?如果此代碼SQL全文搜索問題

Select UserID, UserName 
From Users 
Where Contains([UserName], '%Jack%') 

我得到了用戶接口回來,但如果我這樣做

Select UserID, UserName 
From Users 
Where Contains([UserName], '%Ja%') 

我什麼也沒得到什麼我做錯了嗎?

回答

3

您正在將LIKE語法與CONTAINS混合使用。請記住,全文搜索是基於單詞的,而搜索字符串中的字符模式。

嘗試:

Select UserID, UserName 
From Users 
Where Contains([UserName], '"Ja*"') 
+0

然後執行搜索的最佳方法是什麼?使用Fulltext或Like,因爲我希望用戶能夠搜索6個不同的列,並且如果它們中的任何一個匹配,則返回該行。 – Bob1254 2011-03-09 21:09:34

+0

假設您正在搜索單詞或單詞的前綴,則全文搜索速度會快得多。如果你想查找字符片段(例如'server'中的'rv'),那麼你需要依賴Like。 – 2011-03-09 21:20:15

0

Contains([UserName], '"Ja*"') - 語法前綴搜索。將匹配「傑克」,但不是「阿賈克斯」

您不能使用全文搜索進行任何POSTFIX搜索。如果你嘗試:

Contains([UserName], '"*Ja*"') -- wrapped in * 

這實際上還是做前綴僅搜索,它會去掉所有特殊字符不正確的語法,這意味着第一個*將被剝離,然後跑了。如果您需要開放式搜索,則需要使用%%來查找內部部分或單詞。