본문 바로가기
프로그래밍 공부/DBMS

[POSTGRESQL] COALESCE 조회 시 결과 자체가 없어서 안된다고?

by Luna_lua 2023. 1. 17.
반응형

COALESCE는 값이 NULL일때 다른 문구로 바꿔주는 DB 함수이다.

아래의 예시를 통해 보자!

 

[사용법]

SELECT COALESCE( 컬럼1명, 컬럼1명이 NULL일때 사용하고 싶은 문구)

=> SELECT COALESCE(AGE, 10)

=> AGE가 NULL이면 10, 아니면 해당 AGE의 값이 출력! 

 

[테이블 예시]

IDX NAME AGE
1 TURTLE 20
2 RABBIT NULL

이런 데이터가 있다고 했을때 아래의 쿼리로 던져보면 

SELECT AGE 
FROM TABLENAME
WHERE NAME = 'RABBIT';

# 해당 결과 : NULL

이럴때 NULL이라는것을 표시하고 싶지 않을때가 있다. 그럴때 아래의 문구로 작성하면 된다.

SELECT COALESCE(AGE, -1) 
FROM TABLENAME
WHERE NAME = 'RABBIT';

# 해당 결과 : -1

 

 

여기서 문제가 생긴다!

데이터에 없는 이름을 넣으면? AGE가 NULL인지의 문제가 아니라 그냥 해당 데이터 자체가 없으면?

여기서 해결법은 한번더 감싸주는것!

 

[문제]

SELECT COALESCE(AGE, -1) 
FROM TABLENAME
WHERE NAME = 'APPLE';

# 해당 결과 : 조회되는 내용이 없음

[해결법]

SELECT COALESCE(
	SELECT AGE 
	FROM TABLENAME
	WHERE NAME = 'APPLE'
    ), 'NO NAME');

# 해당 결과 : 'NO NAME'

 

만약 이와 같은 문제가 있었다면 없는 이름의 조회값도 NULL로 받아지도록 걸러내보자!

반응형