Tja, jag är inte säker på om det här är bättre , men det kan vara lite mer kortfattat att använda LNNVL
, en funktion (som du bara kan använda i en WHERE
sats) som returnerar TRUE
om ett givet uttryck är FALSE
eller OKÄND (NULL
). Till exempel...
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);
... returnerar alla utom raden där X =1 och Y =2.