본문 바로가기
Web/SQL

[MySQL] NULL값 치환 - IFNULL, IF, NULLIF, CASE, COALSECE 함수

by 수짱수짱 2023. 5. 4.

(1) IFNULL(컬럼명, 치환값)

=> 컬럼명이 null인 경우 치환값으로 치환하여 반환

 

ex) CHECK 컬럼이 null인 경우 N으로 치환하여 출력

SELECT IFNULL(CHECK, 'N')
FROM TABLE;

 

(2) IF() + IS NULL

=> IF(컬럼명 IS NULL, 'TRUE 값', 'FALSE 값')

SELECT IF(CHECK IS NULL, 'N', 'Y') 
FROM TABLE;

 

 

(3) NULLIF(값1, 값2)

=> (값1 == 값2)인 경우 NULL을 반환, FALSE인 경우 값1을 반환

SELECT NULLIF(1,1) 
-- null 

SELECT NULLIF(1,2)
-- 1

 

(4) CASE

=> 해당 컬럼 값을 조건식을 통해 True, False를 판단하여 조건에 맞게 컬럼 값을 변환

-- CASE, WHEN ~ THEN, ELSE, END
SELECT
	CASE
    	WHEN NAME IS NULL THEN "NO NAME" -- NAME 컬럼이 IS NULL 조건식에 True인 경우 "NO NAME" 출력
        ELSE NAME -- 나머지 False
	END AS NAME
FROM ANIMALS

 

 

(5) COALESCE

=> 지정한 표현식들 중에 NULL이 아닌 첫 번째 값을 반환, 모든 DBMS에서 사용 가능

 

- 표현식은 여러 항목 지정 가능

- 처음으로 만나는 NULL이 아닌 값을 출력

- 표현식이 모두 NULL일 경우 결과도 NULL을 반환

- 배타적 OR 관계 열에서 활용도가 높음

-- NULL 처리
SELECT COALSECE(컬럼1, 컬럼1이 NULL인 경우 대체 값)
FROM 테이블

-- 배타적 OR 관계 열
-- COL 1~4중 NULL이 아닌 첫번째 COL 출력
SELECT COALSECE(COL1, COL2, COL3, COL3)
FROM 테이블
-- NAME 컬럼이 NULL인 경우 다음 표현식으로, 다음 표현식 "NO NAME"은 NULL이 아니므로 출력
SELECT COALSECE(NAME, "NO NAME") 
FROM ANIMALS

 


Reference

- https://dkswnkk.tistory.com/534

- https://velog.io/@gillog/DB-MySQL-NULL-%EC%B2%98%EB%A6%ACIFNULL-CASE-COALESCE

 

* 수정일 2023-05-09

'Web > SQL' 카테고리의 다른 글

[MySQL] 부분 문자열 가져오기 - LEFT, MID, RIGHT 함수  (0) 2023.05.09
[MySQL] LIKE, CONCAT, ROUND 함수  (0) 2023.04.30
[MySQL] SQLyog 2058 Error  (0) 2022.08.17
[Mysql] 포트번호 변경  (0) 2022.07.06
[Ubuntu] Mysql 명령어  (0) 2022.07.06