Bem, não tenho certeza se isso é melhor , mas pode ser um pouco mais conciso usar
LNNVL
, uma função (que você só pode usar em um WHERE
cláusula) que retorna TRUE
se uma determinada expressão for FALSE
ou DESCONHECIDO (NULL
). Por exemplo... WITH T AS
(
SELECT 1 AS X, 1 AS Y FROM DUAL UNION ALL
SELECT 1 AS X, 2 AS Y FROM DUAL UNION ALL
SELECT 1 AS X, NULL AS Y FROM DUAL UNION ALL
SELECT NULL AS X, 1 AS Y FROM DUAL
)
SELECT
*
FROM
T
WHERE
LNNVL(X <> Y);
... retornará todas, exceto a linha em que X =1 e Y =2.