如何在oracle中使null等于null

Mal*_*ist 3 oracle plsql

我有一个变量传递给我的存储过程,它是一个过滤器(基本上).但是,该字段有时可以为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以这种方式运行?

Jon*_*eet 8

怎么样:

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,则基本上使查询匹配.