首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在oracle中使null等于null

如何在oracle中使null等于null
EN

Stack Overflow用户
提问于 2011-08-09 01:56:54
回答 3查看 2.5K关注 0票数 4

我有一个变量被传递给我存储的proc,它是一个过滤器(基本上)。但是,该字段有时可以为null,如果是,我希望能够针对该字段为null的行进行检查。

例如,

表A:

代码语言:javascript
复制
VALUE_COLUMN | FILTER_COLUMN
----------------------------
A            |  (NULL)
B            |  (NULL)           
C            |  (NULL)
D            |  (NULL)
A            |  1
E            |  (NULL)
F            |  (NULL)
B            |  1

查询(带有input、val、filter):

代码语言:javascript
复制
SELECT  COUNT(1)
  FROM    TableA
WHERE 
  wrap_up_cd = val
  AND brn_brand_id = filter

预期的I/O:

代码语言:javascript
复制
val = A, filter = (null) = 1
val = A, filter = 1 = 1
val = C, filter = 1 = 0

我怎样才能让Oracle这样做呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-09 01:58:22

这样如何:

代码语言:javascript
复制
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专家,但我希望它能起作用--如果筛选器和值都为空,基本上就会使查询匹配。

票数 9
EN

Stack Overflow用户

发布于 2011-08-09 02:03:44

Oracle没有ISNULL函数。所以你需要像这样的东西

代码语言:javascript
复制
SELECT COUNT(*)
  FROM tableA
 WHERE brn_brand_id = filter
    OR (    brn_brand_id IS NULL 
        AND filter IS NULL)
票数 2
EN

Stack Overflow用户

发布于 2017-08-30 02:28:21

这有时也很方便:

代码语言:javascript
复制
   SELECT COUNT(*)
      FROM tableA
   WHERE
      NVL(brn_brand_id, CHR(0)) = NVL(filter, CHR(0))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6986386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档