我需要在一个网站上改进搜索,该搜索框只搜索完全相同的字符。如果我输入超链接,它将返回以超链接开头但不包含contenthyperlink,_hyperlink等的所有内容。这是我的SQL查询 -
select O_ObjectID,
rtrim(O_Name) as O_Name
from A_Object
where O_Name like @NamePrefix + '%'
order by O_Name
答案 0 :(得分:1)
使用此
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运算符如何工作http://www.w3schools.com/sql/sql_like.asp。但正如Simos Mikelatos上面所说的那样,如果你使用全文搜索,你也可以通过更纤细的单词找到匹配。
答案 1 :(得分:1)
严格来说你的查询是正确的,但你真正想要的是“以'超链接'开头的单词”,这意味着会有一个空格字符,或者它将是文本字段的开头。
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
并且在此方面的表现会明显加快,因为它会在单词级别编制索引。