SQL문에서 NULL과 관련한 함수가 다양한데,
각 DB 환경과 상황에 맞춰서 사용하는 것이 중요하다.
NULL 관련 함수는 활용도가 높기 때문에,
각각의 함수에 대해 특징과 사용 예시를 알아보자.
1) NVL, NVL2, ISNULL, IFNULL
1-1) NVL 함수
: Oracle에서 사용하는 함수로, 첫 번째 인자가 NULL일 경우 두 번째 인자를 반환함
SELECT NVL(COL1, 0) FROM TABLE1;
1-2) NVL2 함수
: Oracle에서 사용하는 함수로 NVL 함수와 유사하지만, 세 개의 인자를 받을 수 있음
- 첫 번째 인자가 NULL이 아닌 경우 두 번째 인자를 반환하고, NULL인 경우 세 번째 인자를 반환함
SELECT NVL2(COL1, COL2, 0) FROM TABLE1;
1-3) ISNULL 함수
: MSSQL(SQL Server)에서 사용하는 함수로, NVL 함수와 동일하게 첫 번째 인자가 NULL일 경우 두 번째 인자를 반환함
SELECT ISNULL(COL1, 0) FROM TABLE1;
1-4) IFNULL 함수
: MySQL에서 사용하는 함수로, NVL 함수와 동일하게 첫 번째 인자가 NULL일 경우 두 번째 인자를 반환함
SELECT IFNULL(COL1, 0) FROM TABLE1;
2) COALESCE
: 처음으로 NULL이 아닌 컬럼을 만나면 그 값을 반환함
- 여러 개의 인자를 받을 수 있음(NULL이 아닌 첫 번째 인자 반환)
- SQL 표준 함수로, 대부분의 데이터베이스에서 사용할 수 있음(Oracle, MySQL, MariaDB 등)
SELECT COALESCE(COL1, COL2, · · · , 0) FROM TABLE1;
위의 예시처럼 여러 개의 컬럼을 나열하고, 컬럼의 값이 NULL이 아닌 것이 있다면 그 값을 반환한다.
만약 나열한 컬럼들이 다 NULL이라면 마지막 인자인 0을 반환한다.
3) NULLIF
: Oracle과 MSSQL에서 사용하는 함수로, 지정한 두 인자가 같으면 NULL을 반환하고, 아니면 첫 번째 인자 값을 반환
SELECT NULLIF(COL1, '') FROM TABLE1;
위 경우, COL1의값이 '' 인 경우 NULL을 반환, '' 이 아니라면 해당 컬럼의 값을 반환한다.
4) 예시
: 위에서 소개한 함수들에 대해 ORACLE 환경에서 간단한 쿼리를 작성해보았다.
[reference]
https://cas12kr.tistory.com/54
https://jieun-c.tistory.com/3
https://blog.naver.com/seek316/222106306739
'DataBase > SQL' 카테고리의 다른 글
[SQL] 쿼리 결과가 없는 경우 0으로 반환하려면? (0) | 2025.03.14 |
---|---|
[SQL] ORDER BY에 조건을 주려면? (0) | 2025.03.13 |