oracle 对DECODE使用多个条件

chy5wohz  于 2023-10-16  发布在  Oracle
关注(0)|答案(1)|浏览(118)

我有这个句子要在SQL中解码:如果A和B不为空,则返回此ID
如何使用DECODE功能?
谢谢
我没有发现任何关于在SQL中的DECODE中使用两个不同变量的信息

czfnxgou

czfnxgou1#

这是样品表;只有ID = 1满足您指定的条件:

SQL> select * from test order by id;

        ID A B
---------- - -
         1 x y   --> A and B are both NOT NULL, so ID = 1 should be returned
         2   z
         3 w

你能用decode吗?当然,但它真的很丑,很难写,读(理解)和维护。

SQL> select id
  2  from test
  3  where 1 = decode(a, null, 0,
  4                            decode(b, null, 0, 1)
  5                  );

        ID
----------
         1

正如所评论的,case表达式真的很好,易于编写,阅读(理解)和维护。我建议你使用它。

SQL> select id
  2  from test
  3  where 1 = case when a is not null and b is not null then 1
  4                 else 0
  5            end;

        ID
----------
         1

SQL>

相关问题