gpt4 book ai didi

SQL 在不等于查询中不显示空值?

转载 作者:行者123 更新时间:2023-12-03 07:27:35 24 4
gpt4 key购买 nike

这只是出于好奇而提出的问题,但我正在查看数据库并通过对其中一列的查询从表中提取数据。该列有四个可能的值 null012。当我运行查询时:

SELECT * FROM STATUS WHERE STATE != '1' AND STATE != '2';

我得到与运行相同的结果:

SELECT * FROM STATUS WHERE STATE = '0';

即查询列中top命令中具有空值的行似乎从结果中被省略,这种情况在SQL中总是发生吗?

我正在通过 Oracle SQL Developer 运行命令。

最佳答案

在多种语言中,NULL 的处理方式有所不同:大多数人都知道二值逻辑,其中 truefalse 是 bool 表达式中唯一可比较的值(即使是 false 也是定义为 0 且与其他值一样为 true)。

在标准 SQL 中,您必须考虑 three-valued logic 。 NULL 不被视为真正的值,您宁愿称其为“未知”。因此,如果该值未知,则不清楚您的情况 state 是 0、1 还是其他任何值。因此 NULL != 1 结果再次变为 NULL

由此得出的结论是,无论在哪里过滤可能为 NULL 的内容,都必须自己处理 NULL 值。请注意,语法也不同:NULL 值只能与 x IS NULL 进行比较,而不是与 x = NULL 进行比较。有关显示逻辑运算结果的真值表,请参阅维基百科。

关于SQL 在不等于查询中不显示空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8036691/

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