SQL
NVL 함수와 COALESCE 함수
초코너무조코
2025. 1. 23. 14:23
728x90
NVL 함수와 COALESCE 함수는 비슷한 기능을 하지만, 약간의 차이가 있습니다. 둘 다 NULL 값을 처리하는 함수로 사용되지만, 그 사용 방식과 동작에 차이가 있습니다.
1. NVL 함수 (Oracle 전용)
- NVL(expr1, expr2):
- expr1이 NULL일 경우 expr2를 반환하고, 그렇지 않으면 expr1을 반환합니다.
- Oracle 전용 함수로, 다른 DBMS에서는 사용할 수 없습니다.
- 두 개의 인자만 처리할 수 있습니다.
예시:
SELECT NVL(salary, 0) FROM employees;
설명: salary가 NULL이면 0을 반환하고, 그렇지 않으면 salary 값을 그대로 반환합니다.
2. COALESCE 함수
- COALESCE(expr1, expr2, ..., exprN):
- 여러 개의 인자를 받아서, 가장 먼저 NULL이 아닌 값을 반환합니다.
- 다수의 인자를 처리할 수 있고, NULL이 아닌 첫 번째 값을 반환하는 방식으로 동작합니다.
- 표준 SQL 함수로, 다양한 DBMS에서 사용할 수 있습니다 (Oracle, MySQL, SQL Server 등).
예시:
SELECT COALESCE(salary, bonus, 0) FROM employees;
설명: salary가 NULL이면 bonus를 반환하고, bonus도 NULL이면 0을 반환합니다. 이처럼 여러 인자를 사용하여 첫 번째로 NULL이 아닌 값을 반환합니다.
3. 차이점 요약
기능 | NVL | COALESCE |
인자 수 | 두 개의 인자만 처리 | 여러 개의 인자 처리 가능 |
동작 방식 | 첫 번째 인자가 NULL일 때 두 번째 인자 반환 | 여러 인자 중 첫 번째로 NULL이 아닌 값을 반환 |
호환성 | Oracle 전용 | 표준 SQL 함수로 다양한 DBMS에서 사용 가능 |
일반적인 용도 | NULL을 다른 값으로 대체할 때 | 여러 값 중 첫 번째로 NULL이 아닌 값을 선택할 때 |
4. 결론
- NVL 함수는 두 개의 인자만 받아들이고 Oracle 전용 함수입니다.
- COALESCE 함수는 여러 인자에 대해 첫 번째로 NULL이 아닌 값을 반환하는 함수로, 표준 SQL 함수입니다.
따라서 기능적으로는 비슷하지만, 다루는 방식과 사용할 수 있는 환경에 차이가 있습니다.
728x90