Is there better Oracle operator to do null-safe equality check?

前端 未结 3 1763
醉梦人生
醉梦人生 2020-12-19 23:34

According to this question, the way to perform an equality check in Oracle, and I want null to be considered equal null is something like

SELECT  COUNT(1)
           


        
3条回答
  •  南方客
    南方客 (楼主)
    2020-12-20 00:15

    Well, I'm not sure if this is better, but it might be slightly more concise to use LNNVL, a function (that you can only use in a WHERE clause) which returns TRUE if a given expression is FALSE or UNKNOWN (NULL). For example...

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

    ...will return all but the row where X = 1 and Y = 2.

提交回复
热议问题