对于 MySQL 8 和 SQLite 3.39,所有这 3 个请求都返回 NULL:
SELECT 1 - NULL;
SELECT NULL - 1;
SELECT NULL - NULL;
但对于 PostgreSQL 15,最后一个失败并显示:
error: operator is not unique: unknown - unknown
在最后一种情况下,让 PostgreSQL 返回 NULL 的最短代码是什么?
(请注意,与SELECT a.x - a.y FROM a;
、
x
和y
可能都为 NULL。PostgreSQL 不会抱怨,因为它可以根据列定义确定类型。)
一个简单的解决方案就是:
SELECT CASE
WHEN x IS NULL THEN NULL
WHEN y IS NULL THEN NULL
ELSE x - y
END;