본문 바로가기
Database

오라클 DB에서 NULL 값 처리 방법

by 굿센스굿 2024. 12. 3.
반응형


데이터베이스에서 NULL 값은 중요한 개념입니다. NULL은 "값이 존재하지 않는다"를 의미하며, 특정 컬럼에 값이 없음을 나타냅니다. 오라클 DB에서는 NULL 값을 적절히 처리하지 않으면 데이터 분석이나 운영 중 오류가 발생할 수 있습니다. 이번 글에서는 오라클 DB에서 NULL 값을 처리하는 방법과 실제 활용 예제를 소개하겠습니다.


1. NULL 값의 기본 이해

  • NULL 값의 정의: 데이터가 비어있거나 존재하지 않는 상태.
  • 주의 사항:
    • NULL은 0(zero)이나 공백(space)과 다릅니다.
    • NULL 값과 어떤 값의 비교 연산은 항상 FALSE 또는 UNKNOWN을 반환합니다.
    • NULL 값의 처리는 SQL 표준 규칙에 따릅니다.

2. NULL 값 확인 방법

NULL 값을 확인할 때는 일반 비교 연산자(=, != 등)를 사용할 수 없습니다. 대신, 아래 두 가지를 사용해야 합니다.

  • IS NULL: 컬럼 값이 NULL인지 확인.
  • IS NOT NULL: 컬럼 값이 NULL이 아닌지 확인.
-- NULL 값 확인 예제
SELECT employee_id, first_name
FROM employees
WHERE last_name IS NULL;

-- NULL 값이 아닌 데이터 확인
SELECT employee_id, first_name
FROM employees
WHERE last_name IS NOT NULL;

3. NULL 값 대체: NVL 함수

NVL 함수는 NULL 값을 특정 값으로 대체합니다. 이 함수는 데이터 조회 시 NULL로 인한 예상치 못한 결과를 방지합니다.

구문:

NVL(column_name, replacement_value)

예제:

-- 급여(salary) 컬럼의 NULL 값을 0으로 대체
SELECT employee_id, NVL(salary, 0) AS salary
FROM employees;

-- 이메일 컬럼이 NULL이면 '미등록'으로 표시
SELECT employee_id, NVL(email, '미등록') AS email_status
FROM employees;

4. CASE문을 활용한 NULL 처리

CASE 문은 조건에 따라 NULL 값을 처리할 수 있는 유연한 방법입니다.

예제:

-- 부서별 급여 정보에서 NULL 급여를 "정보 없음"으로 표시
SELECT department_id,
       CASE 
           WHEN salary IS NULL THEN '정보 없음'
           ELSE TO_CHAR(salary)
       END AS salary_info
FROM employees;

5. COALESCE 함수

COALESCE는 여러 값을 입력받아 첫 번째로 NULL이 아닌 값을 반환합니다. 여러 컬럼 또는 값 중 기본값을 지정할 때 유용합니다.

구문:

COALESCE(value1, value2, ..., default_value)

예제:

-- 이메일이 NULL인 경우 기본 이메일을 설정
SELECT employee_id,
       COALESCE(email, 'default@company.com') AS email
FROM employees;

-- 여러 컬럼에서 가장 먼저 값이 있는 데이터를 반환
SELECT COALESCE(address1, address2, '주소 없음') AS address
FROM customers;

6. NULL 관련 주의점

  1. 집계 함수와 NULL
    집계 함수(SUM, AVG, COUNT 등)는 NULL 값을 무시합니다.
  2. -- NULL을 포함한 급여 합계 계산 SELECT SUM(NVL(salary, 0)) AS total_salary FROM employees;
  3. NULL 값 정렬
    오라클 DB에서 NULL 값은 기본적으로 ORDER BY 시 가장 마지막에 정렬됩니다.
  4. -- NULL 값을 맨 앞으로 정렬 SELECT employee_id, salary FROM employees ORDER BY salary NULLS FIRST;

7. 실제 사례로 배우는 NULL 값 처리

사례 1: 고객 연락처 정보 업데이트
고객 테이블에서 전화번호가 없는 경우 기본 전화번호를 입력합니다.

UPDATE customers
SET phone_number = NVL(phone_number, '000-0000-0000')
WHERE phone_number IS NULL;

사례 2: 판매 보고서에서 미판매 데이터 표시
판매 테이블에서 판매량이 NULL인 경우 "0"으로 표시해 정확한 보고서를 생성합니다.

SELECT product_id,
       NVL(sales_count, 0) AS sales_count
FROM sales;

사례 3: 복합 키의 NULL 값 처리
복합 키를 사용하는 테이블에서 NULL 값을 기본값으로 대체해 데이터 무결성을 유지합니다.

SELECT COALESCE(region, 'Unknown') || '-' || COALESCE(department, 'None') AS region_department
FROM employee_locations;

결론

오라클 DB에서 NULL 값은 데이터 무결성과 정확성에 중요한 영향을 미칩니다. NULL을 확인하고 적절히 처리하는 방법을 이해하면 데이터 분석과 운영의 신뢰성을 높일 수 있습니다. 위에서 소개한 NVL, COALESCE, CASE 문 등의 활용 방법과 예제를 참고하여 상황에 맞는 최적의 NULL 처리 방안을 적용해 보세요.

반응형