gpt4 book ai didi

PostgreSQL 9.4 - 比较 NULL 值

转载 作者:行者123 更新时间:2023-11-29 11:19:46 25 4
gpt4 key购买 nike

在正常情况下,将 NULL 值与任何其他值进行比较会得到另一个 NULL 值。

SELECT NULL = NULL;

返回 NULL


the documentation, 9.23.5. Row Constructor Comparison 中所述,这在比较任意行时(大部分)成立。 :

SELECT ROW(1, NULL, 'baz text') = ROW(1, NULL, 'baz text'); 

返回 NULL


但是,当比较明确定义的复合类型时,NULL 值被视为相等。

CREATE TYPE test_type AS (
foo INTEGER,
bar BIGINT,
baz TEXT
);

SELECT (1, NULL, 'baz text')::test_type = (1, NULL, 'baz text')::test_type;

返回 TRUE

这种行为似乎没有记录(我已经看过,没有发现任何关于这种行为的引用)。

我想使用此行为来实现一些业务规则,并希望确保这样做是安全的。

  1. 这是否符合任何 SQL 规范?
  2. 可能将来会改变吗?

最佳答案

我在 official documentation 中找到了这个: [...] 在比较两个复合类型值的其他上下文中,两个 NULL 字段值被认为是相等的,并且 NULL 被认为大于非 NULL。为了使复合类型具有一致的排序和索引行为,这是必要的。。我认为这可以解决您的问题。

关于PostgreSQL 9.4 - 比较 NULL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34474315/

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