存在的情况为null然后为false

时间:2018-03-13 11:54:48

标签: sql oracle

我有疑问:

select (case when exists (select null from dual) then 'row exists'
             else '2'
       )
from dual

存在什么(select null from dual)。

我希望select null from dual不存在,因为我的第一个查询返回为2,但是不要检查此子查询是否为空,因为我的子查询返回了多行。

1 个答案:

答案 0 :(得分:0)

我推测你很困惑,exists (select null from dual)是一个真实的条件。

那就是SQL的工作原理。 exists正在检查是否从子查询返回了任何。根据定义,select . . . from dual将返回一行。这就是dual的作用。

您可能对select null感到困惑。好吧,我也不喜欢那样。所以我通常把它写成:

select (case when exists (select 1 from dual) then 'row exists'
             else '2'
       )
from dual;

1是任意的。但是,它在许多编程语言中都是“真实”的价值,并且输入非常简单。