Todas essas 3 solicitações retornam NULL com MySQL 8 e SQLite 3.39:
SELECT 1 - NULL;
SELECT NULL - 1;
SELECT NULL - NULL;
Mas com o PostgreSQL 15, o último falha com:
error: operator is not unique: unknown - unknown
Qual é o código mais curto para que o PostgreSQL retorne NULL no último caso?
(Observe que com SELECT a.x - a.y FROM a;
e
podem x
ambos y
ser NULL. O PostgreSQL não reclamará, pois pode determinar o tipo a partir das definições da coluna.)
Uma solução simples é apenas:
SELECT CASE
WHEN x IS NULL THEN NULL
WHEN y IS NULL THEN NULL
ELSE x - y
END;