【发布时间】:2019-04-05 20:37:34
【问题描述】:
我使用了以下WHERE 子句
WHERE (TYPE1 = :P3_ITEM1 OR :P3_ITEM1 IS NULL)
过滤我对 TYPE1 的查询,当页面项 P3_ITEM1 不为空时,它可以很好地显示相同 TYPE1 的记录。
现在我需要为 TYPE2 和 TYPE3 添加另外两个过滤器。通常只有一个页面项 P3_ITEM1、P3_ITEM2 或 P3_ITEM3 不为空,因此我需要过滤任何不为空的页面。
我试过了
WHERE (TYPE1=:P3_ITEM1 OR :P3_ITEM1 IS NULL) OR
(TYPE2=:P3_ITEM2 OR :P3_ITEM2 IS NULL) OR
(TYPE3=:P3_ITEM3 OR :P3_ITEM3 IS NULL)
但它不起作用。
我尝试在 WHERE 子句中使用 CASE 语句,但到目前为止没有成功。有人可以帮忙吗?
WHERE CASE
WHEN (:P3_ITEM1 IS NOT NULL) THEN (TYPE1=:P3_ITEM1)
WHEN (:P3_ITEM2 IS NOT NULL) THEN (TYPE2=:P3_ITEM2)
WHEN (:P3_ITEM3 IS NOT NULL) THEN (TYPE3=:P3_ITEM3)
【问题讨论】:
-
在
WHERE子句中使用AND/OR构造而不是case表达式通常会更好。 -
你能告诉我我该怎么做吗?
-
你可以在这里找到答案stackoverflow.com/questions/505747/…