使用SQL Server存储过程搜索多个关键字

Ali*_*Net 1 stored-procedures keyword sql-server-2008

我将使用存储过程搜索我的数据库(SQL Server 2008).我的用户可以在文本框中输入关键字(,例如,可以使用关键字分隔关键字).

目前我正在使用这样的东西:

keyword like N"%'+@SearchQuery%'%"
Run Code Online (Sandbox Code Playgroud)

(keywordnvarchar我表中的一列,@SearchQuery是我存储过程的输入)

它工作正常,但如果用户键入几个关键字:苹果,橙,香蕉

我应该限制我的关键​​字数量吗?如果我有多个关键字,我该如何编写存储过程?我应该如何将用户输入传递给存储过程?我应该传递apple, orange, banana一个完整的短语然后我应该在我的存储过程中解析它们,或者我应该将我的关键字分开并发送3个关键字?如何查询这3个关键字?一个for循环?

执行此类查询的最佳做法是什么?

谢谢

pod*_*ska 5

在应用程序中解析关键字.SQL不是字符串操作的最佳位置.

将关键字作为表值参数发送(即:http://www.mssqltips.com/sqlservertip/2112/table-value-parameters-in-sql-server-2008-and-net-c/)然后你就是' t限于固定数量的关键字.

将通配符添加到存储过程中的参数

update @keywords set keyword = '%'+keyword+'%'
Run Code Online (Sandbox Code Playgroud)

通过将源数据加入此表来过滤结果

例如:

SELECT result
FROM source 
    INNER JOIN @keywords keywords 
         ON source.keyword LIKE keywords.keyword
Run Code Online (Sandbox Code Playgroud)