加入收藏 | 设为首页 | 会员中心 | 我要投稿 南京站长网 (https://www.025zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – ‘in’子句如何在oracle中工作

发布时间:2021-03-03 02:31:22 所属栏目:MsSql教程 来源:网络整理
导读:select 'true' from dual where 1 not in (null,1); 当我们执行此操作时,什么都不会产生 我的问题是: 以上查询在逻辑上等效于 select 'true' from dual where 1 != null and 1 != 1; 这将不会像上述声明那样产生任何结果 请澄清? 解决方法 正确(但请注意

select 'true' from dual where 1 not in (null,1);

当我们执行此操作时,什么都不会产生

我的问题是:

以上查询在逻辑上等效于

select 'true' from dual where 1 != null and 1 != 1;

这将不会像上述声明那样产生任何结果

请澄清?

解决方法

正确(但请注意,IN是一个运算符,而不是一个子句,它在SQL中的工作方式与此类似,不仅适用于Oracle).
where 1 not in (null,1)

相当于:

where 1 != null and 1 != 1

这应该写成:

WHERE 1 NOT IN (NULL,1)

WHERE 1 <> NULL AND 1 <> 1

这与:

WHERE (1 <> NULL) AND (1 <> 1)

其评估结果为:

WHERE UNKNOWN AND FALSE

并进一步:

WHERE FALSE

因此,它正确地返回没有行.

请注意,如果你有WHERE 1 NOT IN(NULL,2),它将评估为WHERE UNKNOWN(作为练习留下),也不会返回任何行.

(编辑:南京站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读