gpt4 book ai didi

sql - 'in'子句在oracle中如何工作

转载 作者:行者123 更新时间:2023-12-02 17:21:58 24 4
gpt4 key购买 nike

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(作为练习),并且不会返回任何行要么。

关于sql - 'in'子句在oracle中如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11311266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com