Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Existe um operador Oracle melhor para fazer uma verificação de igualdade com segurança nula?


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.