sql-server - 将 WHERE 子句作为参数传递给 SQL Server 存储过程

标签 sql-server sql-server-2012

我正在处理一个存储过程,其中需要从代码发送 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/

相关文章:

mysql - 收集最大月份数据

sql - 使用 SUM 和 Group by 计算百分比

database - 如何在 VS 2012 中将静态数据存储在 SQL Server 数据库项目中

sql - 如何使用 SQL 查询省略空值

sql - 与联合所有SQL查询获取错误 'Column specified multiple times'

c# - Return value using String result=Command.ExecuteScalar() result返回null时出现错误

sql - 学习 ANSI SQL 的最佳资源是什么?

sql - 如何选择一年中的每个星期一日期和每个星期五日期

c# - 版本 11 的 localdb 连接字符串是什么

通过 SQL Server 2012 备份和恢复文件 FileTable