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