2011-05-26 90 views
2

我有下面的存储过程,全文搜索执行2008年问题

CREATE Procedure sp_SearchDB (
    @SearchWord nvarchar(200) 
) 

SET @SearchWord = '"*' + @SearchWord + '*"' 

Select * 
    from Table1 
    Where Contains(Description, @SearchWord) 

当我搜索“SQL服务器”,它返回我与“SQL”或“服务器”的结果,但不会用“SQLServer”返回数据(如果没有空格),同样如果给searchword = SQLServer,它不会返回“SQL Server”(用空格)。我怎样才能得到结果“SQL Server”和“SQLServer”?

回答

0

您需要按照以下步骤执行该过程:

EXEC sp_SearchDB N'SQL SERVER' 
+0

如果您发布的代码,XML或数据样本,** **请在高亮文本编辑器的线和编辑器工具栏上的“代码示例”按钮('{}')点击很好的格式和语法高亮它! – 2011-05-26 04:58:07

+0

我试过了,但它不起作用。它仅使用SQL或SERVER或[SQL SERVER]返回行,但不会返回SQLServer(不带空格)。 – Sue 2011-05-27 02:10:48

+0

你可以发布你用来执行存储过程的代码吗? – 2011-05-27 10:11:51

0

坏消息,你可以做到这一点,但它会给你一些误报。请尝试:

EXEC sp_SearchDB N'SQL' 

如果您关心误报,他们的答案是:没有办法做到这一点。如果你想两者的“SQL Server”和“SQLServer的”你应该做的:

Select * from Table1 Where Contains(Description, '"SQL Server" OR "SQLServer"'). 

您可以编写代码,都会尽量不要找两个词一起分离。如果您的客户搜索:

baby sitter 

您的代码将创建这个变化当它找到一个空格:

'"baby sitter" or "babysitter"' 

我希望你能得到它。