我有一个变量被传递给我存储的proc,它是一个过滤器(基本上)。但是,该字段有时可以为null,如果是,我希望能够针对该字段为null的行进行检查。
例如,
表A:
VALUE_COLUMN | FILTER_COLUMN
----------------------------
A | (NULL)
B | (NULL)
C | (NULL)
D | (NULL)
A | 1
E | (NULL)
F | (NULL)
B | 1查询(带有input、val、filter):
SELECT COUNT(1)
FROM TableA
WHERE
wrap_up_cd = val
AND brn_brand_id = filter预期的I/O:
val = A, filter = (null) = 1
val = A, filter = 1 = 1
val = C, filter = 1 = 0我怎样才能让Oracle这样做呢?
发布于 2011-08-09 01:58:22
这样如何:
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))我不是Oracle专家,但我希望它能起作用--如果筛选器和值都为空,基本上就会使查询匹配。
发布于 2011-08-09 02:03:44
Oracle没有ISNULL函数。所以你需要像这样的东西
SELECT COUNT(*)
FROM tableA
WHERE brn_brand_id = filter
OR ( brn_brand_id IS NULL
AND filter IS NULL)发布于 2017-08-30 02:28:21
这有时也很方便:
SELECT COUNT(*)
FROM tableA
WHERE
NVL(brn_brand_id, CHR(0)) = NVL(filter, CHR(0))https://stackoverflow.com/questions/6986386
复制相似问题