我需要改进网站上的搜索功能,搜索框中只搜索完全相同的字符。如果我在超级链接键入它会返回一切开始的超链接,但没有什么如contenthyperlink,_hyperlink等。这里是我的sql查询 -在数据库中搜索单词
select O_ObjectID,
rtrim(O_Name) as O_Name
from A_Object
where O_Name like @NamePrefix + '%'
order by O_Name
我需要改进网站上的搜索功能,搜索框中只搜索完全相同的字符。如果我在超级链接键入它会返回一切开始的超链接,但没有什么如contenthyperlink,_hyperlink等。这里是我的sql查询 -在数据库中搜索单词
select O_ObjectID,
rtrim(O_Name) as O_Name
from A_Object
where O_Name like @NamePrefix + '%'
order by O_Name
严格来说,您的查询是正确的,但是您真正要查找的是“以'超链接'开始的单词'”,这意味着将会有空格字符或它将成为文本字段的开头。
select O_ObjectID,
rtrim(O_Name) as O_Name
from A_Object
where O_Name like @NamePrefix + '%' OR O_Name like '% ' + @NamePrefix + '%'
order by O_Name
音符'% ' + @NamePrefix + '%'
您的其他选项添加空格字符是使用全文搜索这意味着您的查询应该是这样的:
select O_ObjectID,
rtrim(O_Name) as O_Name
from A_Object
where CONTAINS(O_Name, '"'+ @NamePrefix + '*"')
order by O_Name
和性能上这会让会显着更快,因为它将在词级索引。
使用此
select O_ObjectID,
rtrim(O_Name) as O_Name
from A_Object
where O_Name like '%'+ @NamePrefix + '%'
order by O_Name
你需要把%的
搜索文本的双方都与<anything>hyperlink<anything>
匹配。请参见SQL like操作符如何工作http://www.w3schools.com/sql/sql_like.asp。但是,如果您使用全文搜索,Simos Mikelatos会在上面提出要求,您还可以通过更简单的词找到匹配。
为什么不使用全文搜索? http://msdn.microsoft.com/en-us/library/ms142547.aspx – viper