【发布时间】:2020-02-06 11:05:16
【问题描述】:
使用 PostgreSQL,我正在寻找类似 @987654322@ 的东西,其中 x 可以是 NULL。在x IS NULL 的情况下,查询应该返回NULL,类似于MySQL 和Google BigQuery,而不是0,这是PostgreSQL 中的标准行为。有没有没有条件和条件的简单方法?
SELECT GREATEST(0,NULL) 应该返回 NULL,而不是 0
在官方文档中:
GREATEST 和 LEAST 函数选择最大值或最小值 从任意数量的表达式列表中。表达式必须都是 可转换为通用数据类型,这将是 结果(详见第 10.5 节)。列表中的 NULL 值是 忽略。仅当所有表达式都计算时,结果才会为 NULL 为 NULL。
请注意,GREATEST 和 LEAST 不在 SQL 标准中,而是 共同扩展。其他一些数据库使它们返回NULL(如果有) 参数为 NULL,而不是仅当全部为 NULL 时。
https://www.postgresql.org/docs/9.6/functions-conditional.html
我正在寻找一个不会忽略 NULL 的 GREATEST 函数
【问题讨论】:
-
使用这么旧版本的 PostgreSQL 有什么特别的原因吗?如果它不再受支持,我不会感到惊讶
-
我正在使用这个版本:PostgreSQL 9.6.11 on x86_64-pc-linux-gnu,由 gcc (GCC) 4.8.3 编译 20140911 (Red Hat 4.8.3-9), 64-位
-
您是否希望
greatest(1,2,null,4,5)也为 NULL? -
正确,预期的行为是最大的(1,2,null)应该返回NULL
-
更新了问题以在标签、URL 和描述中使用正确的版本号。
标签: sql postgresql postgresql-9.6