[DB] MySQL NULL 처리(IFNULL, CASE, COALESCE)
MySQL에서 Column의 값이 Null인 경우를 처리해주는 함수들은 IFNULL, CASE, COALESCE과 같은 함수들이 있다.
Orcale의 NVL()과 비슷한 기능을 한다.
IFNULL
해당 Column의 값이 NULL을 반환할 때, 다른 값으로 출력할 수 있도록 하는 함수이다.
- 기본 구조
SELECT IFNULL(Column명, "Null일 경우 대체 값") FROM 테이블명; - Example
// NAME Column이 NULL인 경우 "No name"을 출력, NULL이 아닌 경우 NAME Column을 출력
SELECT IFNULL(NAME, "No name") as NAME
FROM ANIMAL_INS
IF()??
Null 처리는 사실 IF 함수와 IS NULL 조건으로도 가능하다.
- Example
// NAME Column이 NULL이 True인 경우 "No name"을, False인 경우는 NAME Column을 출력
SELECT IF(IS NULL(NAME), "No name", NAME) as NAME
FROM ANIMAL_INS
!! MS-SQL의 ISNULL()과는 다르다.
- Example
// MS-SQL인 상황, ISNULL() 예시 // NAME Column이 NULL인 경우 "No name"을, Null이 아닌 경우 NAME Column의 값을 출력 SELECT ISNULL(NAME, "No name") as NAME FROM ANIMAL_INSCASE
해당 Column 값을 조건식을 통해 True, False를 판단하여 조건에 맞게 Column값을 변환할 때 사용하는 함수이다.
- 기본 구조
CASE WHEN 조건식1 THEN 식1 WHEN 조건식2 THEN 식2 ... ELSE 조건에 맞는경우가 없는 경우 실행할 식 END - Example
// NAME Column의 IS NULL 조건이 True인 경우 "No name" 출력
// WHEN 조건들에 True인 조건이 없을 경우 ELSE 문을 통해 NAME Column의 값 출력
// END 이후 그 Column의 별칭을 NAME으로 지정
SELECT
CASE
WHEN NAME IS NULL THEN "No name"
ELSE NAME
END as NAME
FROM ANIMAL_INS
COALESCE
COALESCE는 지정한 표현식들 중에 NULL이 아닌 첫 번째 값을 반환한다.
모든 DBMS에서 사용가능
표현식은 여러 항목 지정이 가능하고, 처음으로 만나는 NULL이 아닌 값을 출력한다. 표현식이 모두 NULL일 경우엔 결과도 NULL 반환
COALESCE는 배타적 OR 관계 열에서 활용도가 높다.
엔터티(테이블)에서 두 개 이상의 속성(열) 중 하나의 값만 가지는 데이터 일 경우
- 기본 구조 ```sql // NULL 처리 상황 SELECT COALESCE(Column명1, Column명1이 NULL인 경우 대체할 값) FROM 테이블명
// 배타적 OR 관계 열 // Column1 ~ 4 중 NULL이 아닌 첫 번째 Column을 출력 SELECT COALESCE(Column명1, Column명2, Column명3, Column명4) FROM 테이블명
- Example
```sql
// NAME Column의 값이 NULL인 경우 다음 표현식으로 넘어간다.
// 다음 표현식인 "No name"이 Null이 아니므로 "No name"을 출력.
SELECT COALESCE(NAME, "No name")
FROM ANIMAL_INS
🙆♂️ 참고사이트 🙇♂️
COALESCE() 함수[김정선의 SQL Server 이야기]
[MySQL] CASE, COALESCE, IFNULL NULL 처리[exp_blog]
ifnull, coalesce[Rough Stone :: Developer]
댓글남기기