【问题标题】:Trying to update where clause to only apply to a certain value尝试更新 where 子句以仅适用于某个值
【发布时间】:2020-05-27 21:38:05
【问题描述】:

我的数据库中有一个存储过程。它是一段动态代码,可针对多个不同的参数运行。

假设我有一个名为@Param 的参数被传递:17(这个参数对于不同的进程会有所不同)。

在我的查询中,我尝试使用此参数来更新 WHERE 子句,如下所示:

SELECT val1, val2 
FROM tbl1
WHERE 1 = 1 
  AND ((val2 IN ('h1', 'h2') AND @Param IN (17)) OR @Param NOT IN (17))

这样的代码有意义吗?我试图只将此WHERE 子句: (val2 in ('h1','h2') 应用于@Param=17

【问题讨论】:

    标签: sql stored-procedures where-clause


    【解决方案1】:

    你似乎想要:

    where (@param = 17 and val2 in ('h1', 'h2')) or
          (@param <> 17)
    

    【讨论】:

    • 应该将整个 where 子句放在一组括号中吗?
    • @Koosh 。 . .没有必要过度使用括号。如果您对它们更熟悉,那么您可以使用它们——但就像自行车上的辅助轮一样,它们不是必需的,当您对 SQL 更熟悉时,您可能不想使用它们。
    • @GordonLinoff 我问的原因是我在 WHERE 语句中还有其他子句我想仍然适用于 param=17,所以答案中的语句是我需要的唯一代码特定参数
    猜你喜欢
    • 1970-01-01
    • 2022-06-15
    • 2017-11-05
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    相关资源
    最近更新 更多