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

前端之家收集整理的这篇文章主要介绍了sql – ‘in’子句如何在oracle中工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_403_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(作为练习留下),也不会返回任何行.

原文链接:https://www.f2er.com/mssql/83898.html

猜你在找的MsSQL相关文章