根据这个问题,在Oracle中执行相等性检查的方法,我想将null视为等于null就像是
SELECT COUNT(1)
FROM TableA
WHERE
wrap_up_cd = val
AND ((brn_brand_id = filter) OR (brn_brand_id IS NULL AND filter IS NULL))
Run Code Online (Sandbox Code Playgroud)
这实际上可以使我的代码变脏,特别是如果我有很多这样的地方,并且where应用于多个列.有更好的选择吗?
好吧,我不确定这是否更好,但使用它可能稍微简洁LNNVL,一个函数(你只能在一个WHERE子句中使用),TRUE如果给定的表达式是FALSEUNKNOWN(NULL)则返回.例如...
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);
Run Code Online (Sandbox Code Playgroud)
...将返回除X = 1和Y = 2之外的所有行.