gpt4 book ai didi

sql - NOT IN 子句中的 NULL 值

转载 作者:行者123 更新时间:2023-12-04 08:57:17 25 4
gpt4 key购买 nike

当我使用 not in 为我认为相同的查询获得不同的记录计数时出现了这个问题。 where约束和另一个 left join . not in中的表约束有一个空值(坏数据),这导致该查询返回 0 条记录。我有点理解为什么,但我可以使用一些帮助来完全掌握这个概念。

简单地说,为什么查询 A 返回结果而 B 没有?

A: select 'true' where 3 in (1, 2, 3, null)
B: select 'true' where 3 not in (1, 2, null)

这是在 SQL Server 2005 上。我还发现调用 set ansi_nulls off导致 B 返回结果。

最佳答案

查询 A 与以下内容相同:

select 'true' where 3 = 1 or 3 = 2 or 3 = 3 or 3 = null

3 = 3是真的,你得到一个结果。

查询 B 与以下内容相同:
select 'true' where 3 <> 1 and 3 <> 2 and 3 <> null

ansi_nulls正在, 3 <> null是 UNKNOWN,因此谓词计算为 UNKNOWN,并且您不会得到任何行。

ansi_nulls已关闭, 3 <> null为真,因此谓词的计算结果为真,并且您得到一行。

关于sql - NOT IN 子句中的 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/129077/

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