Ali*_*Net 1 stored-procedures keyword sql-server-2008
我将使用存储过程搜索我的数据库(SQL Server 2008).我的用户可以在文本框中输入关键字(,例如,可以使用关键字分隔关键字).
目前我正在使用这样的东西:
keyword like N"%'+@SearchQuery%'%"
Run Code Online (Sandbox Code Playgroud)
(keyword是nvarchar我表中的一列,@SearchQuery是我存储过程的输入)
它工作正常,但如果用户键入几个关键字:苹果,橙,香蕉
我应该限制我的关键字数量吗?如果我有多个关键字,我该如何编写存储过程?我应该如何将用户输入传递给存储过程?我应该传递apple, orange, banana一个完整的短语然后我应该在我的存储过程中解析它们,或者我应该将我的关键字分开并发送3个关键字?如何查询这3个关键字?一个for循环?
执行此类查询的最佳做法是什么?
谢谢
在应用程序中解析关键字.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)