Oracle Оператор Case, когда x имеет значение null, тогда else возвращает null - PullRequest
0 голосов
/ 04 августа 2020

Я написал простой оператор case, как показано ниже:

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

1 Ответ

2 голосов
/ 04 августа 2020

LEFT JOIN возвращает NULL, а не CASE. Верните имя столбца и выполните case logi c в самом внешнем запросе:

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