los*_*rse 8 postgresql postgresql-9.4
在正常情况下,将NULL值与任何其他值进行比较会产生另一个NULL值.
SELECT NULL = NULL;
Run Code Online (Sandbox Code Playgroud)
返回 NULL
在比较任意行时,这(大多数情况下)是正确的,如文档9.23.5中所述.行构造函数比较:
SELECT ROW(1, NULL, 'baz text') = ROW(1, NULL, 'baz text');
Run Code Online (Sandbox Code Playgroud)
返回 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;
Run Code Online (Sandbox Code Playgroud)
返回 TRUE
这种行为似乎没有记录(我看过并发现没有对行为的引用).
我想使用此行为来实现一些业务规则,并希望确保这样做是安全的.
| 归档时间: |
|
| 查看次数: |
2265 次 |
| 最近记录: |