Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

forest_moon

[SQL] NULL 값 처리하기 본문

SQL

[SQL] NULL 값 처리하기

rokga 2023. 3. 9. 02:26

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