【问题标题】:SQL SERVER - CASE in WHERE (THEN IS NULL ELSE IS NOT NULL )SQL SERVER - CASE in WHERE (THEN IS NULL ELSE IS NOT NULL)
【发布时间】:2018-09-11 18:05:55
【问题描述】:

我已经看到这个链接来找到我的问题的解决方案:

CASE in WHERE, SQL Server

但是,在我的情况下,我需要评估当参数具有特定值时,它会评估一个字段是否为空,例如:

WHERE (CASE @parameter WHEN 1 THEN a.fieldOne IS NULL ELSE a.fieldOne IS NOT NULL END)

但这对我不起作用...

编辑 1

例如当@parameter = 1

SELECT * FROM
FROM exampleTable as s
WHERE (s.fieldOne IS NULL)

当@parameter = 0

SELECT * FROM
FROM exampleTable as s
WHERE (s.fieldOne IS NOT NULL)

【问题讨论】:

  • 你能解释一下“不起作用”吗?你想用ELSE a.fieldOne IS NOT NULL 实现什么。 CASE 表达式返回一个标量值。
  • 你想得到什么输出? fieldOne IS NULL 是条件测试,不是输出值。

标签: sql sql-server case where


【解决方案1】:

您不能像您尝试过的那样使用case 表达式返回部分查询,只能返回值。

不过,你可以用逻辑运算符来模仿他的行为:

WHERE (@parameter =  1 AND a.fieldOne IS NULL) OR
      (@parameter <> 1 AND a.fieldOne IS NOT NULL)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    相关资源
    最近更新 更多