[SQL] NULL 값 변환하기 - IFNULL, COALESCE

EnaZero·2025년 1월 15일
0

Intro.

sql 쿼리문으로 값을 조회하려고 합니다. 데이터베이스 테이블에 일부 값들이 NULL인 경우에, 테이블을 조작하지 않고 다른값을 기본으로 출력하도록 하고 싶다면 어떻게 해야할까요?

IFNULL

IFNULL은 한 컬럼내의 데이터 값이 NULL이면, 다른 값으로 치환하여 출력하도록 할 수 있는 함수입니다.

--- EX)
IFNULL('data column', 'data')
--- IFNULL('변경이 필요한 데이터', '치환할 값')

예시 : 프로그래머스 SQL KIT) 12세 이하인 여자 환자 출력하기

PATIENT 테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요. 이때 전화번호(TLNO)가 없는 경우, 'NONE'으로 출력시켜 주시고 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬해주세요.

SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE') AS TLNO
FROM PATIENT
WHERE AGE <=12 AND GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME;

여기서 보면 전화번호가 없는 경우, 'NONE'으로 출력하라는 구문이 있죠.
즉 NULL값인 부분을 'NONE' 이라는 문자로 치환해야 하는것입니다.
따라서 IFNULL을 사용해서 치환해 줍니다.

COALESCE

COALESCE 함수는 인자 값들 중에서 NULL이 아닌 첫 번째 값을 반환하는 함수입니다. 예를들어 COALESCE(A, B)라고 함수를 적었을 때 A, B값에 따라 함수 결과는 어떻게 될 지 생각해보세요.

---EX)
COALESCE('data column', 'data')

위의 IFNULL에서 들었던 예시를 이용하자면, TLNO라는 컬럼이 NULL일때 'NONE'으로 출력하려면 다음과 같이 적으면 됩니다.

SELECT COALESCE(TLNO, 'NONE') FROM PATIENT_TABLE ;

TLNO의 데이터 행들 중에서 NULL이 아닌것들은 기존의 값을 출력하고, NULL인 것들은 'NONE'값이 출력됩니다.

0개의 댓글