gpt4 book ai didi

sql - NULL bool 表达式设计的合理性是什么

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

在 SQL 的设计中这样做的基本原理是什么(在 postgres 中评估,但似乎在所有版本中都相同:

select NULL OR TRUE  --> True

select NULL OR FALSE --> NULL (expected false, but is NULL)

最佳答案

NULL 表示您不知道该值是什么。这可能是真的,也可能是假的。我们还不知道。

NULL OR False 在这里更容易。此表达式此时显然不能计算为 True。另一方面,它也不一定是 False。我们还没有足够的信息来解决整个表达式,因此 NULL 是唯一有意义的结果。

NULL OR TRUE 另一方面,确实提供了足够的信息来求解整个表达式。对于 OR 条件,如果任何一方为真,则逻辑上整个结果为真;对方做什么并不重要。即使该 NULL 最终证明是 False,表达式结果仍然计算为 True。您无法对 NULL 做任何事情来使该表达式变为 False

并且,为了清楚起见,还值得查看 NULL AND TRUENULL AND FALSE。前者也将评估为 NULL,因为,同样,我们还没有足够的信息来完全解决表达式,而后者将评估为 False,因为没有无论 NULL 如何计算,表达式都不会变为 True

如果你真的想搞糊涂,想想当你进行 NULL = NULL 相等比较时会发生什么。真正的结果是我们还不知道 (NULL),但是如果你强行发出这个问题,数据库会将表达式计算为 False:NULL 不等于自身。

关于sql - NULL bool 表达式设计的合理性是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44662166/

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