Е, не съм сигурен дали това е по-добре , но може да е малко по-кратко да използвате LNNVL
, функция (която можете да използвате само в WHERE
клауза), която връща TRUE
ако даден израз е FALSE
или НЕИЗВЕСТНО (NULL
). Например...
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);
...ще върне всички, освен реда, където X =1 и Y =2.