这是我的查询,它们不起作用,但我想做这样的事情:
SELECT a_field FROM a_table
WHERE
...
AND
CASE
WHEN a_value_from_another_query IS NULL THEN a_second_field IS NULL
ELSE a_second_field = a_value_from_another_query
END
或者
SELECT a_field FROM a_table
WHERE
...
AND
CASE a_value_from_another_query
WHEN NULL THEN a_second_field IS NULL
ELSE a_second_field = a_value_from_another_query
END
或者
SELECT a_field FROM a_table
WHERE
...
AND
CASE NVL(a_value_from_another_query, 'x')
WHEN 'x' THEN a_second_field IS NULL
ELSE a_second_field = a_value_from_another_query
END
当
a_value_from_another_query IS NULL
,我要加a_second_field IS NULL
到我的 WHERE 子句,当 a_value_from_another_query IS NOT NULL
,我要加a_second_field = a_value_from_another_query
到我的 WHERE 子句。我怎样才能做到这一点?
最佳答案
听起来您只是从工具箱中选择了错误的工具。
除非我严重误解了您,否则以下内容:
WHERE
(a_value_from_another_query IS NULL AND a_second_field IS NULL)
OR
(a_value_from_another_query IS NOT NULL AND a_second_field = a_value_from_another_query)
...应该是你想要的。
关于sql - 如何在带有 IS NULL 的 WHERE 子句中使用 CASE 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6867917/