我的全文搜索有什麼問題?如果此代碼SQL全文搜索問題
Select UserID, UserName
From Users
Where Contains([UserName], '%Jack%')
我得到了用戶接口回來,但如果我這樣做
Select UserID, UserName
From Users
Where Contains([UserName], '%Ja%')
我什麼也沒得到什麼我做錯了嗎?
我的全文搜索有什麼問題?如果此代碼SQL全文搜索問題
Select UserID, UserName
From Users
Where Contains([UserName], '%Jack%')
我得到了用戶接口回來,但如果我這樣做
Select UserID, UserName
From Users
Where Contains([UserName], '%Ja%')
我什麼也沒得到什麼我做錯了嗎?
您正在將LIKE語法與CONTAINS混合使用。請記住,全文搜索是基於單詞的,而搜索字符串中的字符模式。
嘗試:
Select UserID, UserName
From Users
Where Contains([UserName], '"Ja*"')
Contains([UserName], '"Ja*"')
- 語法前綴搜索。將匹配「傑克」,但不是「阿賈克斯」
您不能使用全文搜索進行任何POSTFIX搜索。如果你嘗試:
Contains([UserName], '"*Ja*"') -- wrapped in *
這實際上還是做前綴僅搜索,它會去掉所有特殊字符不正確的語法,這意味着第一個*將被剝離,然後跑了。如果您需要開放式搜索,則需要使用%%來查找內部部分或單詞。
然後執行搜索的最佳方法是什麼?使用Fulltext或Like,因爲我希望用戶能夠搜索6個不同的列,並且如果它們中的任何一個匹配,則返回該行。 – Bob1254 2011-03-09 21:09:34
假設您正在搜索單詞或單詞的前綴,則全文搜索速度會快得多。如果你想查找字符片段(例如'server'中的'rv'),那麼你需要依賴Like。 – 2011-03-09 21:20:15