Yah, saya tidak yakin apakah ini lebih baik , tetapi mungkin sedikit lebih ringkas untuk menggunakan LNNVL
, sebuah fungsi (yang hanya dapat Anda gunakan dalam WHERE
klausa) yang mengembalikan TRUE
jika ekspresi yang diberikan adalah FALSE
atau TIDAK DIKETAHUI (NULL
). Misalnya...
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);
...akan mengembalikan semua kecuali baris di mana X =1 dan Y =2.