1월 10, 2024

PostgreSQL COALESCE 함수란? null 체크 sql

 PostgreSQL에서 사용하는 COALESCE 함수에 대해 알아보자.


sql에서 select를 하다 보면 null 값이 나올 경우를 대비해야 한다. left join 등을 하여 특정 칼럼 값이 null이 나왔는데 이를 0 으로 인식한다던지 하는 경우가 필요하다. 


이럴 때 PostgreSQL에서 사용할 수 있는 문법이 바로 COALESCE이다.


COALESCE(특정 칼럼, 대체값1, 대체값2, .... 대체값n)

이렇게 사용할 수 있다. 


즉, 대체값도 null일 경우를 대비하여 여러개를 사용할 수 있다. 


예를 들어, 

사원정보라는 테이블에 

EMP_NM라는 칼럼으로 홍길동, 강백호가 있다고 쳐 보자. 


EMP_NMEMP_ENGL_NM
홍길동Daniel
강백호null



이런 식으로 특정 사원은 한글 이름만 있고 영어 이름은 없는 경우가 있을 수 있다. 

그런 경우에 우리는


SELECT 

EMP_NM, COALESCE(EMP_ENGL_NM, '')

FROM

사원기본;


이런 식으로 sql을 작성해줄 수 있다. 


만약 NULL값이 있을 수 있다면 그냥 empty string으로 출력하겠다는 의미이다. 

empty string이 아니라 만약 다른 것으로 출력을 원한다면 다르게 사용할 수 있다. 


SELECT 

EMP_NM, COALESCE(EMP_ENGL_NM, EMP_NM, '')

FROM

사원기본;


이런식으로 사용하면 영어이름이 없을 경우 EMP_NM 칼럼을 쓰고, 그것도 null일 경우 empty string으로 출력을 하겠다는 것인데


보통의 경우 EMP_NM은 사원기본의 key값이므로 null일 가능성이 없다. 


대부분 

SELECT 

EMP_NM, COALESCE(EMP_ENGL_NM, EMP_NM)

FROM

사원기본;


이 정도만 써도 null safety하게 sql를 구성할 수 있다.