Oracle
 sql >> Database >  >> RDS >> Oracle

Esiste un operatore Oracle migliore per eseguire un controllo di uguaglianza null-safe?

Beh, non sono sicuro che sia meglio , ma potrebbe essere leggermente più conciso usare LNNVL , una funzione (che puoi usare solo in un WHERE clausola) che restituisce TRUE se una determinata espressione è FALSE o SCONOSCIUTO (NULL ). Ad esempio...

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);

...restituirà tutto tranne la riga dove X =1 e Y =2.