SQL에서 NULL 값을 0 또는 특정 숫자로 대체하는 방법

데이터베이스 작업에서 NULL 값을 적절하게 처리하는 것은 데이터 무결성을 유지하고 정확한 쿼리 결과를 보장하는 데 중요합니다. NULL 값은 데이터의 부재를 나타내며 계산 및 집계에 영향을 미칠 수 있습니다. 이 기사에서는 구체적인 예를 사용하여 SQL에서 NULL 값을 0 또는 특정 숫자로 대체하는 방법을 자세히 설명합니다.

목차

NULL 값의 기본

데이터베이스의 NULL 값은 특정 데이터의 부재를 나타냅니다. 이는 “값 없음”을 의미하며 숫자 0 또는 빈 문자열과는 다릅니다. NULL 값은 다음과 같은 시나리오에서 일반적으로 사용됩니다:

  • 값이 아직 입력되지 않은 경우
  • 해당 값이 존재하지 않는 경우
  • 값이 알려지지 않은 경우

SQL에서는 NULL 값을 포함하는 열에 대한 단순한 등호 비교(=)가 예상대로 작동하지 않으므로 특별한 처리가 필요합니다. NULL 값은 알 수 없는 것으로 간주되므로 아무것과도 같지 않다고 여겨집니다. 따라서 NULL 값을 확인하려면 IS NULL 또는 IS NOT NULL을 사용하십시오.

또한 NULL 값을 포함하는 열에서 작업할 때 주의해야 합니다. 예를 들어, NULL 값을 포함하는 열을 집계할 때 이러한 NULL 값은 종종 무시되어 의도하지 않은 결과를 초래할 수 있습니다. 이를 피하기 위해 NULL 값을 0 또는 특정 숫자로 대체하는 것이 효과적입니다. 다음 섹션에서는 이를 자세히 설명합니다.

NULL 값을 0으로 대체하는 방법

SQL에서 NULL 값을 0으로 대체하려면 COALESCE 함수나 IFNULL 함수를 사용하는 것이 일반적입니다. 이러한 함수는 NULL 값이 존재할 경우 지정된 값을 반환합니다. 다음은 이러한 함수를 사용하는 방법을 구체적인 예와 함께 설명합니다.

COALESCE 함수 사용

COALESCE 함수는 여러 인수를 받아 첫 번째 NULL이 아닌 인수를 반환합니다. 다음은 COALESCE 함수를 사용하여 NULL 값을 0으로 대체하는 방법입니다.

SELECT COALESCE(column_name, 0) AS new_column_name
FROM table_name;

예제

예를 들어, sales 테이블의 revenue 열에 NULL 값이 포함되어 있는 경우, 이러한 NULL 값을 0으로 대체하는 쿼리는 다음과 같습니다:

SELECT COALESCE(revenue, 0) AS revenue
FROM sales;

IFNULL 함수 사용

IFNULL 함수는 MySQL 전용 함수로, NULL 값이 존재할 경우 지정된 값을 반환합니다. 이 함수는 COALESCE 함수와 동일한 목적을 가지지만 두 개의 인수만 받습니다.

SELECT IFNULL(column_name, 0) AS new_column_name
FROM table_name;

예제

예를 들어, sales 테이블의 revenue 열에 NULL 값이 포함되어 있는 경우, IFNULL 함수를 사용하여 이러한 NULL 값을 0으로 대체하는 쿼리는 다음과 같습니다:

SELECT IFNULL(revenue, 0) AS revenue
FROM sales;

이러한 함수를 사용하면 NULL 값을 0으로 대체하고 원활하게 계산 및 집계를 수행할 수 있습니다. 다음 섹션에서는 NULL 값을 특정 숫자로 대체하는 방법을 설명합니다.

NULL 값을 특정 숫자로 대체하는 방법

NULL 값을 0이 아닌 특정 숫자로 대체하려면 COALESCE 함수나 IFNULL 함수를 사용할 수 있습니다. 이를 통해 NULL 값을 적절히 처리할 수 있는 특정 숫자를 지정할 수 있습니다.

COALESCE 함수 사용

COALESCE 함수는 여러 인수 중 첫 번째 NULL이 아닌 값을 반환합니다. NULL 값을 특정 숫자로 대체하려면 두 번째 인수로 해당 숫자를 지정하십시오.

SELECT COALESCE(column_name, specific_value) AS new_column_name
FROM table_name;

예제

예를 들어, employee 테이블의 bonus 열에 NULL 값이 포함되어 있는 경우, 이러한 NULL 값을 500으로 대체하는 쿼리는 다음과 같습니다:

SELECT COALESCE(bonus, 500) AS bonus
FROM employee;

IFNULL 함수 사용

IFNULL 함수는 NULL 값을 특정 숫자로 대체하는 MySQL 전용 함수로 두 개의 인수를 받습니다. 두 번째 인수로 특정 숫자를 지정하십시오.

SELECT IFNULL(column_name, specific_value) AS new_column_name
FROM table_name;

예제

예를 들어, employee 테이블의 bonus 열에 NULL 값이 포함되어 있는 경우, IFNULL 함수를 사용하여 이러한 NULL 값을 500으로 대체하는 쿼리는 다음과 같습니다:

SELECT IFNULL(bonus, 500) AS bonus
FROM employee;

이를 통해 NULL 값을 특정 숫자로 대체하여 일관성을 유지하고 필요한 계산 및 분석을 수행할 수 있습니다. 다음 섹션에서는 CASE 문을 사용한 복잡한 대체 방법을 설명합니다.

CASE 문을 사용한 복잡한 대체 방법

CASE 문을 사용하면 조건에 따라 NULL 값을 특정 값으로 대체할 수 있습니다. CASE 문은 보다 유연하고 복잡한 대체 처리를 가능하게 합니다.

CASE 문 기본 구조

CASE 문의 기본 구조는 다음과 같습니다:

SELECT 
    CASE 
        WHEN condition THEN value
        ELSE alternative_value
    END AS new_column_name
FROM table_name;

예제

예를 들어, sales 테이블의 discount 열에 NULL 값이 포함되어 있는 경우 다음 조건에 따라 이를 대체할 수 있습니다:

  1. NULL 값이고 total_sales가 1000 이상일 경우 discount를 100으로 대체
  2. NULL 값이고 total_sales가 1000 미만일 경우 discount를 50으로 대체

이 경우의 쿼리는 다음과 같습니다:

SELECT 
    CASE 
        WHEN discount IS NULL AND total_sales >= 1000 THEN 100
        WHEN discount IS NULL AND total_sales < 1000 THEN 50
        ELSE discount
    END AS adjusted_discount
FROM sales;

대체 조건 결합

더 복잡한 조건도 결합할 수 있습니다. 예를 들어, employee 테이블의 bonus 열을 다음 조건에 따라 대체하려는 경우:

  1. NULL 값이고 performance_rating이 5인 경우 bonus를 1000으로 대체
  2. NULL 값이고 performance_rating이 3과 4 사이인 경우 bonus를 500으로 대체
  3. NULL 값이고 performance_rating이 3 미만인 경우 bonus를 200으로 대체

이 경우의 쿼리는 다음과 같습니다:

SELECT 
    CASE 
        WHEN bonus IS NULL AND performance_rating = 5 THEN 1000
        WHEN bonus IS NULL AND performance_rating BETWEEN 3 AND 4 THEN 500
        WHEN bonus IS NULL AND performance_rating < 3 THEN 200
        ELSE bonus
    END AS adjusted_bonus
FROM employee;

이처럼 CASE 문을 사용하면 다양한 조건에 따라 NULL 값을 유연하게 대체할 수 있습니다. 다음 섹션에서는 지금까지 논의한 내용을 요약합니다.

결론

SQL에서 NULL 값을 0 또는 특정 숫자로 대체하는 방법을 설명했습니다. NULL 값은 데이터베이스에서 “부재”를 나타내는 특별한 표시이며, 적절하게 처리되지 않으면 계산 및 집계 결과에 영향을 미칠 수 있습니다. COALESCE 함수나 IFNULL 함수를 사용하여 NULL 값을 0 또는 지정된 숫자로 쉽게 대체할 수 있습니다. 또한 CASE 문을 사용하면 더 복잡한 조건에 따라 NULL 값을 대체할 수 있습니다.

이러한 방법을 활용하여 데이터 일관성을 유지하고 정확한 쿼리 결과를 얻을 수 있습니다. 실제 데이터베이스 작업에서 이러한 기술을 효과적으로 사용하면 데이터 품질을 개선하고 분석의 정확성을 높이는 데 도움이 될 수 있습니다.

목차