이제 데이터 공부 안하는 블로그

NULL을 다루는 방법 본문

SQL

NULL을 다루는 방법

공사노비 2022. 5. 2. 09:36

 

NULL 이 있는 컬럼 , NULL 이 없는 컬럼 추출하기

# NULL 구하기
SELECT *
FROM member
WHERE email IS NULL;

# NULL 있는 컬럼 제외하기
SELECT *
FROM member
WHERE email IS NOT NULL;

 

 

NULL을 다루는 방법 1 - COALESCE

  • - COALESCE 함수는 괄호 속 인자 중에서 가장 첫 번째로 NULL이 아닌 값을 반환

# COALESCE 함수는 괄호 속 인자 중에서 가장 첫 번째로 NULL이 아닌 값을 반환
# height 컬럼에 값이 있으면 그 값 그대로 출력하고 NULL이라면 '값없음'을 출력함

SELECT 
    coalesce(height, '값없음')
FROM main

 

NULL을 다루는 방법 2 - IFNULL

  • IFNULL 함수는 첫 번째 인자가 NULL인 경우에는, 두 번째 인자를 표시하고 NULL이 아니면 해당 값을 그대로 표현
SELECT IFNULL(height, 'N/A')
FROM main

그러니까 height 컬럼이 NULL이면 'N/A'를 출력하고, 
NULL이 아니면 height 컬럼의 값을 그대로 출력

 

NULL을 다루는 방법 3 - IF

  • F 함수는 가장 첫 번째 인자로 어떤 조건식이 온다. 만약 그 조건식의 결과가 True라면 두 번째 인자를 리턴하고, False라면 세 번째 인자를 리턴
SELECT IF(height IS NOT NULL, height, 'N/A')
FROM main

height IS NOT NULL이 True인 경우, 
즉, height 컬럼에 값이 있는 경우에는 그 값이 그대로 출력되고, 
False인 경우 그러니까 height 컬럼이 NULL인 경우는 'N/A'이 출력

 

NULL을 다루는 방법 4 - CASE

# 이런 식으로 사용한다

CASE
	WHEN 조건 THEN 결과
    WHEN 조건 THEN 결과
    ELSE 결과
END
# height 컬럼이 NULL이 아닌 경우 height를 그대로 출력하고 그 외는 전부 N/A 로 출력하라는 CASE문이다.

SELECT
	CASE
		WHEN height IS NOT NULL THEN height
		ELSE 'N/A'
	END
FROM main

 

NULL에 관해 알아야하는 사실

  1. 1. IS NULL 과 = NULL은 다릅니다.
  2. 2. NULL에는 어떤 연산을 해도 결국 NULL이다