728x90
COALESCE 함수사용하여 NULL값 변환하기
COALESCE()를 사용하여 N개 컬럼의 NULL체크를 하여 변환할 수 있다.
얼핏 보면 NVL()과 동일해 보이지만,
NVL()은 인자가 2개만 가능하고 COALESCE()는 인자가 N개까지 가능하다 !
예제를 보면 이해가 빠를 것이다.
SELECT COALESCE(컬럼1, 컬럼2, … ,컬럼N)
FROM TEST_TABLE
컬럼1부터 NULL값을 체크하여 처음으로 NULL 아닌 값을 리턴한다.
예를 들어 컬럼1과, 컬럼2는 null인데 컬럼3이 null이 아닌 값을 갖고 있으면
처음으로 null이 아닌 컬럼3의 값을 리턴해준다.
플러스로 N번째 컬럼까지 모두 null이면 NULL을 리턴한다.
COALESCE()의 내부 구현을 들여다보면,
CASE WHEN을 사용하여 구현된 것이라고 한다.
SELECT CASE WHEN X IS NOT NULL THEN X
WHEN Y IS NOT NULL THEN Y
WHEN Z IS NOT NULL THEN Z
END AS RST
FROM dual
CASE문에서는 조건을 만족하지 않았을 시에는 NULL값을 리턴하기 때문에 ELSE문을 생략해서 작성했다.
N번째 컬럼까지 모두 null이면 NULL을 리턴하는 COALESCE()의 성격과 같다.
아직 쿼리를 짤 때 직접적으로 사용해 본 적은 없지만…
혹시 NVL()을 중첩적 사용할 때, COALESCE()을 사용하여 쿼리를 간소화하고 가독성을 높일 수 있을 것 같다 !
유용하게 사용하길 …!! ㅎ_ㅎ
728x90
반응형
'DB > SQL' 카테고리의 다른 글
[SQL] MariaDB와 Oracle에서의 페이징 처리 : 쿼리 비교와 예시 (0) | 2024.04.25 |
---|---|
[SQL] HAVING 과 WHERE 차이 (0) | 2023.06.16 |
[SQL] NULL값과 ‘’(공백) 비교 (1) | 2023.03.22 |
[SQL] Oracle SQL - DESC (0) | 2020.11.27 |
[Oracle] SQL Developer - Date Format 변경 (0) | 2020.11.09 |
댓글