반응형
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
반응형
'source' 카테고리의 다른 글
까다로운 쿼츠.NET 시나리오 (0) | 2023.10.03 |
---|---|
무슨 일이 있어도 최대 절전 모드에서 MySQL INSERT 문을 배치할 수 없습니다. (0) | 2023.10.03 |
제스처 인식기 및 버튼 동작 (0) | 2023.10.03 |
MySQL에서 COUNT(id) 대 COUNT(*) (0) | 2023.10.03 |
MVC 어플리케이션에서 데이터를 캐시하는 방법 (0) | 2023.10.03 |