반응형
MYSQL에서 데이터를 조회하였을 때 결과 컬럼 값이 NULL로 조회될 경우 다음의 3가지 방법을 활용하여 대체값을 넣어 줄 수 있습니다. IFNULL, CASE, COALESCE 함수를 활용하여 NULL 값을 처리할 수 있고, 오라클의 NVL, NVL2 함수와 비슷한 역할을 합니다.
1. IFNULL
IFNULL은 NULL 값으로 RETURN 된 값을 다른 값으로 대체하는 함수입니다.
1) 문법
- SELECT IFNULL(대상 컬럼, '대체값') FROM 테이블명;
2) 예시
# SALARY 테이블에서 SALARY 값이 0일 경우 하이픈(-)으로 대체
SELECT IFNULL(SALARY, '-') FROM SALARY;
※ IF문?
IF문으로도 NULL 체크 조건을 주어 NULL 값을 처리할 수 있습니다.
# IF문으로 NULL 값 처리하기 -> IF(컬럼 IS NULL, 'NULL 일 경우 값', 'NULL이 아닐 경우 값')
SELECT IF(SALARY IS NULL, '-', SALARY) FROM SALARY;
2. CASE
CASE는 WHEN 조건에 따라 값을 처리하는 함수로 JAVA나 C, PYTHON에서 사용하는 IF ~ ELSE 문과 같은 역할을 하는 함수입니다.
1) 문법
- SELECT CASE
WHEN 조건1 THEN 결과1
WHEN 조건2 THEN 결과2
...
ELSE 조건에 맞는 경우 없을 때 결과
END
FROM 테이블명;
2) 예시
# SALARY가 NULL일 경우 '-' 반환, 다른 경우 SALARY 값 반환
SELECT CASE
WHEN SALARY IS NULL THEN '-'
ELSE SALARY
END
FROM SALARY;
3. COALESCE
COALESCE는 파라미터(PARAMETER) 중 NULL 값이 아닌 첫 파라미터를 반환합니다. 특히 COALESCE는 XOR 관계를 가질 경우 활용도가 높고, MYSQL에서 WITH ROLLUP과 사용할 경우 시너지가 뛰어납니다.
1) 문법
- SELECT COALESCE(컬럼1, 컬럼2, 컬럼3, ...) FROM 테이블명;
2) 이해하기
SELECT COALESCE(NULL, 1, 2);
-> 1
SELECT COALESCE(3, NULL);
-> 3
SELECT COALESCE(NULL, NULL);
-> NULL
3) 예시
# WITH ROLLUP으로 합계 계산 후, NULL 처리되는 DEPT 컬럼을 '합계'로 처리
SELECT COALESCE(DEPT, '합계') AS DEPT,
SUM(SALARY)
FROM SALARY GROUP BY DEPT WITH ROLLUP;
반응형
'IT > MYSQL' 카테고리의 다른 글
MYSQL - CONCAT 함수로 컬럼, 문자 연결하는 방법 (0) | 2023.03.03 |
---|---|
MYSQL - DATE_FOMAT 날짜 형식 지정하기(YYYYMMDD, %Y%m%d) (0) | 2023.03.02 |
MYSQL - ROLLUP 함수로 소계, 합계 한 번에 조회하기 (0) | 2023.02.26 |
MYSQL - SUM, MAX, MIN, AVG, COUNT 집계함수 데이터 조회하기 (0) | 2023.02.25 |
MYSQL - RANK / DENSE_RANK / ROW_NUMBER 함수로 순위 쉽게 구하기 (0) | 2023.02.24 |
댓글