Oracle
 sql >> Base de données >  >> RDS >> Oracle

Existe-t-il un meilleur opérateur Oracle pour effectuer une vérification d'égalité null-safe?

Eh bien, je ne sais pas si c'est mieux , mais il pourrait être légèrement plus concis d'utiliser LNNVL , une fonction (que vous ne pouvez utiliser que dans un WHERE clause) qui renvoie TRUE si une expression donnée est FALSE ou INCONNU (NULL ). Par exemple...

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);

... renverra tout sauf la ligne où X =1 et Y =2.