我的全文搜索有什么问题?如果此代码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