Oracle Case 语句 when x is null then else returns null

Oracle Case Statement when x is null then else returns null

我写了一个简单的案例陈述如下:

case when col_name is null then 'NO' else 'YES' end as col_name

但我仍然得到 (null) 而不是 'NO' ?有什么想法吗?

我试过以下还是不行:

case when isnull(col_name, 0) = 0 then 'NO' else 'YES' end as col_name

我也试过这个:

case when nvl(col_name, 0) = 0 then 'NO' else 'YES' end end as col_name

我知道 NULL 永远不等于 NULL - NULL 是没有值。 NULL 也永远不会不等于 NULL。


整个查询看起来像这样:

Select 

t1.col_a,
t1.col_b,
t1.col_c,
.
.
t2.col_a
t2.col_b

from table_1 t1
 left join table_2 t2 
  on t1.col_a = t2.col_a

 left join
 (select distinct

  case when t3.col_name is null then 'NO' else 'YES' end as col_name,
  t3.col_a,
  t3.col_b,
  t3.col_c) ABC

on abc.col_a = t2.col_a

LEFT JOIN 返回 NULL,而不是 CASE。 Return 列名并在最外层查询中执行 case 逻辑:

select . . . ,
       (case when t2.column_name is null then 'NO' else 'YES' end)