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.