我有一个变量传递给我的存储过程,它是一个过滤器(基本上).但是,该字段有时可以为null,如果是,我希望能够检查具有该字段的行为null.
例如,
表A:
VALUE_COLUMN | FILTER_COLUMN
----------------------------
A | (NULL)
B | (NULL)
C | (NULL)
D | (NULL)
A | 1
E | (NULL)
F | (NULL)
B | 1
Run Code Online (Sandbox Code Playgroud)
查询(带输入,val,过滤器):
SELECT COUNT(1)
FROM TableA
WHERE
wrap_up_cd = val
AND brn_brand_id = filter
Run Code Online (Sandbox Code Playgroud)
预期的I/O:
val = A, filter = (null) = 1
val = A, filter = 1 = 1
val = C, filter = 1 = 0
Run Code Online (Sandbox Code Playgroud)
如何让Oracle以这种方式运行?
怎么样:
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)
我不是Oracle专家,但我希望它能工作 - 如果过滤器和值都为NULL,则基本上使查询匹配.