Nun, ich bin mir nicht sicher, ob das besser ist , aber es könnte etwas prägnanter sein, LNNVL
zu verwenden , eine Funktion (die Sie nur in einem WHERE
verwenden können -Klausel), die TRUE
zurückgibt wenn ein gegebener Ausdruck FALSE
ist oder UNBEKANNT (NULL
). Zum Beispiel...
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);
...gibt alles außer der Zeile zurück, in der X =1 und Y =2.