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)
我写了一个简单的案例陈述如下:
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)