오늘은 SQL에서의 다양한 Null처리 함수를 살펴보겠습니다 ~~ ✨
DBMS별로 지원하는 함수가 다르니, 필요한 함수를 잘 외워놓는게 중요할것같아요~~
먼저, IFNULL, NVL, ISNULL은 다 같은 함수입니다!
Null값을 다른 대체값으로 반환하는 함수에요~
단, DBMS별로 사용하는 함수가 다릅니다! -> MySQL , Oracle, MS SQL 별로 각각 어떤 함수인지 볼까요?
IFNULL (MySQL)
해당 Column의 값이 NULL을 반환할 때, 다른 값으로 출력할 수 있도록 하는 함수이다.
- 기본 구조
SELECT IFNULL(Column명, "Null일 경우 대체 값")
FROM 테이블명;
NVL (Oracle)
* NVL 또는 ISNULL(표현식1, 표현식2) : 표현식1 의 결과값이 NULL 이면 표현식2의 값을 출력
SELECT NVL(표현식1, "Null일 경우 대체 값")
FROM 테이블명;
ISNULL (MS SQL)
* NVL 또는 ISNULL(표현식1, 표현식2) : 표현식1 의 결과값이 NULL 이면 표현식2의 값을 출력
SELECT ISNULL(표현식1, "Null일 경우 대체 값")
FROM 테이블명;
다음은 COALESCE에요,
Null을 대체할떄 사용하기도하고,
Null값이 아닌 첫번쨰 값을 불러오기도 해요
그리고 모든 DBMS에서 지원하는 함수에요! 다 까먹으면 이것만 우선 기억하도록 해요 😋
COALESCE (모든 DBMS에서 사용가능) (꺄🤍)
* COALESCE는 지정한 표현식들 중에 NULL이 아닌 첫 번째 값을 반환한다.
// NULL 처리 상황
SELECT COALESCE(Column명1, Column명1이 NULL인 경우 대체할 값)
FROM 테이블명
// Column1 ~ 4 중 NULL이 아닌 첫 번째 Column을 출력
SELECT COALESCE(Column명1, Column명2, Column명3, Column명4)
FROM 테이블명
* COALESCE(표현식....여러개) : 첫번째 인자의 값이 NULL 이면 두번째 인자값을 리턴, 모든 인자가 NULL 이면 NULL 을 리턴
- ex ) COALESCE(age,1) 에서 age 가 null 이면 1 을 리턴
마지막으로 NULLIF 입니다,
앞서 본 함수와는 조금 다른 목적이에요.
두개가 같으면 Null을 반환합니다.
*NULLIF (Postgre SQL)
* NULLIF(표현식1, 표현식2) : 표현식1이 표현식2와 같으면 NULL 을, 같지 않으면 표현식1 을 리턴.
--> 특정 값을 NULL로 치환할 때 주로 사용.
SELECT NULLIF(표현식1, 표현식2)
FROM 테이블명;
마지막으로 DBMS별 정리한 표를 살펴보며 마무리 하겠습니다! 👀
DATABASE | PROPRIETARY FUNCTION |
COALESCE support |
Oracle | NVL() | Yes |
MySQL | IF() | Yes |
PostgreSQL | NULLIF() | Yes |
Sybase | IFNULL() | Yes |
MS SQL | ISNULL() | Yes |
Sever | ISNULL() | Yes |
DB2 | IFNULL(), NVL() | Yes |
SQLite | IFNULL() | Yes |
'SQL' 카테고리의 다른 글
[SQL] 테이블 생성하기(DROP DATABASES, CREATE DATABASE) (0) | 2022.10.06 |
---|---|
[SQL튜닝] 효율이 좋은 쿼리 (대용량 데이터 처리) (0) | 2022.08.30 |
[SQL] update, set - 테이블 내 데이터 값 변경하기 (0) | 2022.08.30 |
Mysql 에 csv 파일 불러오기 (0) | 2022.08.15 |
[SQL튜닝] SQL 성능 튜닝 기초 (INDEX, Cardinality, 점조건, 선분조건) (0) | 2022.06.28 |