2011-07-13 84 views
0

我需要改进网站上的搜索功能,搜索框中只搜索完全相同的字符。如果我在超级链接键入它会返回一切开始的超链接,但没有什么如contenthyperlink,_hyperlink等。这里是我的sql查询 -在数据库中搜索单词

select   O_ObjectID, 
       rtrim(O_Name) as O_Name 
    from   A_Object 
    where   O_Name like @NamePrefix + '%' 
    order by  O_Name 
+3

为什么不使用全文搜索? http://msdn.microsoft.com/en-us/library/ms142547.aspx – viper

回答

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 

和性能上这会让会显着更快,因为它将在词级索引。

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 like操作符如何工作http://www.w3schools.com/sql/sql_like.asp。但是,如果您使用全文搜索,Simos Mikelatos会在上面提出要求,您还可以通过更简单的词找到匹配。