gpt4 book ai didi

mysql - 在 Oracle SQL 中,null = null 吗?

转载 作者:行者123 更新时间:2023-12-01 00:00:15 25 4
gpt4 key购买 nike

我无法测试 null = null,因为我没有权限在我正在使用的数据库上创建数据。

我的问题是:

如果我有一个包含两行的表格:

Row 1: ItemID = 1, CollectionID = 1, Price = null
Row 2: ItemID = 2, CollectionID = 1, Price = null

我的查询如下:

SELECT CollectionID
FROM my_table TB
WHERE Price >= (SELECT avg(Price)
FROM my_table
WHERE TB.CollectionID = CollectionID);

结果中会显示collectionID 1吗?换句话说,我们为 TB.CollectionIDCollectionID 设置了 null 值。

TB.CollectionID = CollectionID 吗?

最佳答案

不,NULL 不等于任何其他值,包括 NULL 的另一个实例(这对于一般的 SQL 是正确的,而不仅仅是 Oracle (a) ).

那是因为 NULL 不是一个值,而是一个表示“未知”、“不可用”或“不适用”的实体。

这就是为什么,如果你想检查某些东西是否为 NULL,你可以使用:

where something is null

而不是:

where something = null

如果您确实想要将NULL 值视为相等,您可以这样做:

where TB.CollectionID = CollectionID
or (TB.CollectionID is null and CollectionID is null)

但这种做法违背了 SQL 三值逻辑的整个概念

And, as an aside, don't let your lack of power on your own systems limit what you can do. See SqlFiddle, for example, which can let you create and manipulate databases at will.


(a) 当然,有些 DBMS 并不总是以有意义的方式遵循标准,例如某个大型供应商(没有名字,但它以 o 开始并以 racle (b)) 结束无法将零长度字符串存储到 varchar 类型字段中,而不是将其强制为 NULL :-)

(b) 或者在这种情况下,说它以 NULL 开始并以 oracle 结束更有意义:- )

关于mysql - 在 Oracle SQL 中,null = null 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28534229/

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