我正在处理一个存储过程,其中需要从代码发送 WHERE
子句中使用的参数之一。例如 -
CREATE PROCEDURE sp_test
@param1
AS
BEGIN
SELECT *
FROM Table
WHERE @param1
END
在上面的存储过程中,传递给 @param1
的值类似于 Col1 LIKE '%abc%' AND col1 LIKE '%xyz%'
我理解这可以使用动态 SQL 来完成,但我不想使用它。
如有任何帮助,我们将不胜感激。
编辑
我有一个 varchar(MAX)
列,我正在寻找基于用户输入的值搜索此列。使用的运算符(AND/OR)由用户在前端选择。这是内联的问题here
最佳答案
我将创建一个包含 3 列的用户定义表类型:
- 匹配类型(等于、类似等)
- 搜索值
- 和/或
我会将其传递到我的 SP,然后使用动态 SQL 构建查询。
当允许用户定义搜索条件时,您实际上并没有太多其他选择。但我肯定会以结构化格式传递搜索条件,以便您最终控制最终的 SQL(而不是应用程序插入预制 SQL)。
关于sql-server - 将 WHERE 子句作为参数传递给 SQL Server 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53604294/