Notice
Recent Posts
Recent Comments
Link
forest_moon
[SQL] NULL 값 처리하기 본문
NULL이란
우선 NULL이란 unkown 또는 N/A(not applicable)이라는 의미이다.
0이나 공백과는 다르게 아예 값이 없는 값이다. 즉, 알수없거나 존재하지 않아서 적할수 없다.
그래서 테이블을 생성할 때는 기본키를 NULL일 수가 없다는 조건이 붙는다.(NOT NULL)
반면에 기본키가 아닌 null값이 포함된 데이터를 연산 함수를 사용하면 null값이 포함된 값을 자동으로 제외 시키고 계산해준다.
NULL 처리하기
SQL에서 NULL을 처리하는 방법은 함수를 사용해 처리하거나 CASE WHEN문을 사용해서 해결 할 수 있다.
https://school.programmers.co.kr/learn/courses/30/lessons/131114
함수 |
NVL(a,b). //ORACLE |
ISNULL(a,b) // MSSQL |
IFNULL(a,b) |
COALESCE(a,b,c,d) |
위 함수중에 COALESCE 제외하고는 처리하는 방식이 똑같음
예시. 1. NVL
SELECT
WAREHOUSE_ID,
WAREHOUSE_NAME,
ADDRESS,
NVL(FREEZER_YN, 'N') AS FREEZER_YN
FROM
FOOD_WAREHOUSE
WHERE
ADDRESS LIKE '경기도%'
ORDER BY WAREHOUSE_ID ASC;
2. IFNULL
SELECT
WAREHOUSE_ID,
WAREHOUSE_NAME,
ADDRESS,
IFNULL(FREEZER_YN, "N") AS FREEZER_YN
FROM
FOOD_WAREHOUSE
WHERE
ADDRESS LIKE "경기도%"
ORDER BY WAREHOUSE_ID ASC;
3. COALSESC
COALESCE는 (a 가 null이 라면 b 로 대체, b 도 null이면 c로 대체...)
SELECT
WAREHOUSE_ID,
WAREHOUSE_NAME,
ADDRESS,
COALESCE(FREEZER_YN, 'N') AS FREEZER_YN
FROM
FOOD_WAREHOUSE
WHERE
ADDRESS LIKE "경기도%"
ORDER BY WAREHOUSE_ID
4. 함수 이외 처리 방법 CASE 사용
-- CASE 사용
SELECT
WAREHOUSE_ID,
WAREHOUSE_NAME,
ADDRESS,
CASE
WHEN FREEZER_YN IS NULL THEN "N"
ELSE FREEZER_YN
END AS FREEZER_YN
FROM FOOD_WAREHOUSE
WHERE ADDRESS LIKE "경기도%"
ORDER BY WAREHOUSE_ID ASC;
Reference
https://velog.io/@gillog/DB-MySQL-NULL-%EC%B2%98%EB%A6%ACIFNULL-CASE-COALESCE
'SQL' 카테고리의 다른 글
[SQL] Window Function 윈도우 함수 (0) | 2023.05.30 |
---|---|
[Oracle] LAG, LEAD 함수 (0) | 2023.05.30 |
[SQL] SQL WITH문 (0) | 2023.04.20 |
[SQL] SQL UNION , UNION ALL (0) | 2023.04.18 |
[SQL] Query 실행 순서 (0) | 2023.04.02 |