source

SQL 디코딩 Null 값

manycodes 2023. 10. 3. 11:06
반응형

SQL 디코딩 Null 값

아래 문의 사항이 있습니다.언제type_id is null알 수 없는 이름으로 묶었으면 합니다.
어떻게 하면 되죠?
디코드 기능이 있다는 것은 알고 있지만 어떻게 사용하는지 잘 모르겠습니다.

select type_id,
       name
  from test_table
 group by decode(type_id,'Unknown'),
          name;

어떻게 해야하죠?

select decode(type_id, null, 'Unknown', type_id), name, count(*)
from
(
    select 'asdf' type_id, 'name1' name from dual union all
    select 'asdf' type_id, 'name2' name from dual union all
    select null type_id,   'name3' name from dual
) test_table
group by type_id,name;

나는 @sql_mommy 에 동의합니다.CASE아마 더 좋아 보일 겁니다하지만 TechOnTheNet을 주요 정보원으로 사용하는 것에 대해서는 반대합니다.일반적으로 공식 문서를 사용하는 것이 더 좋으며, DECODE 페이지는 그 이유를 보여주는 좋은 예입니다.

DECODE다음과 같은 이상한 동작이 있습니다. "DECODE 함수에서 오라클은 두 널을 동등한 것으로 간주합니다."해당 동작은 TechOnTheNet 기사에 언급되지 않았습니다.

null의 경우 NVL 기능이 있습니다.다음과 같이 사용할 수 있습니다.

select nvl(type_id,'Unknown'),name from test_table group by
type_id,name;

사용할 수 있습니다.NVL함수 또는COALESCE:

select NVL(type_id, 'Unknown') AS type_id,
       name
  from test_table
 group by NVL(type_id, 'Unknown'),
          name; 

아니면

select COALESCE(type_id, 'Unknown') AS type_id,
       name
  from test_table
 group by COALESCE(type_id, 'Unknown'),
          name; 

COALESCE보다 더 효율적입니다.NVL첫번째가 NULL인 경우에만 두번째 인수를 평가하므로 반면에NVL두 인수를 매번 평가합니다.

도움이 되길...

언급URL : https://stackoverflow.com/questions/9712416/sql-decode-null-values

반응형