코딩 스쿨 SQL

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

SQL Null Functions

SQL NULL 처리 함수: NULL 값을 다루는 다양한 함수

SQL에서 NULL 값은 알 수 없거나 없는 값을 의미하며, 일반적인 비교나 연산에서는 처리되지 않기 때문에, 이를 적절히 다루는 것이 중요합니다. SQL에서는 NULL 값을 처리하는 여러 함수가 제공되며, 주로 NULL 값을 대체하거나 NULL 값 여부를 확인하는 데 사용됩니다.

1. 주요 NULL 처리 함수

  1. COALESCE(): 첫 번째로 NULL이 아닌 값을 반환.
  2. ISNULL(): NULL 값을 지정된 값으로 대체.
  3. NULLIF(): 두 값이 같으면 NULL을 반환, 다르면 첫 번째 값을 반환.
  4. IFNULL(): 첫 번째 인수가 NULL이면 두 번째 인수를 반환.
  5. NVL(): NULL 값을 대체 값으로 반환 (Oracle 전용).

1. COALESCE()

COALESCE() 함수는 주어진 여러 인수 중에서 첫 번째로 NULL이 아닌 값을 반환합니다. 여러 열을 비교할 때 유용하며, NULL 값을 대체하는 데 많이 사용됩니다.

1.1 COALESCE() 문법

COALESCE(값1, 값2, 값3, ...)

  • 값1, 값2, 값3: NULL이 아닌 값을 반환할 여러 인수.
  • 첫 번째로 NULL이 아닌 값을 반환하며, 모든 값이 NULL이면 NULL을 반환합니다.

1.2 COALESCE() 예제

예제: 직원의 보너스 값이 NULL이면 기본값 0 반환

SELECT name, COALESCE(bonus, 0) AS bonus_value
FROM employees;

이 쿼리는 bonus 값이 NULL인 경우 0을 반환합니다.

결과 예시:

name bonus_value
John 1000
Jane 500
Bob 0

예제: 여러 열에서 첫 번째로 NULL이 아닌 값 반환

SELECT name, COALESCE(phone_number, email, 'No Contact Info') AS contact_info
FROM employees;

이 쿼리는 phone_number가 NULL이면 email을 반환하고, 둘 다 NULL이면 'No Contact Info'를 반환합니다.

결과 예시:

name contact_info
John 123-456-7890
Jane jane@example.com
Bob No Contact Info

2. ISNULL()

ISNULL() 함수는 첫 번째 인수가 NULL이면 두 번째 인수를 반환하고, 그렇지 않으면 첫 번째 인수를 반환합니다. NULL 값을 특정 값으로 대체하는 용도로 많이 사용됩니다.

2.1 ISNULL() 문법

ISNULL(값1, 대체값)

  • 값1: NULL인지 확인할 값.
  • 대체값: 값1이 NULL일 경우 반환할 값.

2.2 ISNULL() 예제

예제: 직원의 보너스가 NULL이면 0 반환

SELECT name, ISNULL(bonus, 0) AS bonus_value
FROM employees;

이 쿼리는 bonus 값이 NULL이면 0을 반환합니다.

결과 예시:

name bonus_value
John 1000
Jane 500
Bob 0

예제: 부서명이 NULL이면 'Unknown' 반환

SELECT name, ISNULL(department, 'Unknown') AS department_name
FROM employees;

이 쿼리는 departmentNULL이면 **'Unknown'**을 반환합니다.

결과 예시:

name department_name
John Sales
Jane HR
Bob Unknown

3. NULLIF()

NULLIF() 함수는 두 인수가 같으면 NULL을 반환하고, 다르면 첫 번째 인수를 반환합니다. 두 값이 동일한지 비교하고, 동일하면 값을 NULL로 설정할 때 유용합니다.

3.1 NULLIF() 문법

NULLIF(값1, 값2)

  • 값1, 값2: 비교할 두 값. 같으면 NULL을 반환하고, 다르면 값1을 반환합니다.

3.2 NULLIF() 예제

예제: 기본 급여와 실제 급여가 같으면 NULL 반환

SELECT name, NULLIF(salary, default_salary) AS adjusted_salary
FROM employees;

이 쿼리는 salarydefault_salary와 같으면 NULL을 반환하고, 그렇지 않으면 salary를 반환합니다.

결과 예시:

name adjusted_salary
John NULL
Jane 6000

예제: 두 값이 같으면 NULL 반환

SELECT NULLIF(5, 5) AS result;  -- NULL 반환
SELECT NULLIF(5, 10) AS result; -- 5 반환


4. IFNULL() (MySQL 전용)

IFNULL() 함수는 첫 번째 인수가 NULL이면 두 번째 인수를 반환하고, 그렇지 않으면 첫 번째 인수를 반환합니다. **ISNULL()**과 유사하게 작동하며, NULL 값 대체 용도로 사용됩니다.

4.1 IFNULL() 문법

IFNULL(값1, 대체값)

  • 값1: NULL인지 확인할 값.
  • 대체값: 값1이 NULL일 경우 반환할 값.

4.2 IFNULL() 예제

예제: NULL 값을 기본값으로 대체

SELECT name, IFNULL(bonus, 0) AS bonus_value
FROM employees;

이 쿼리는 bonus 값이 NULL이면 0을 반환합니다.

결과 예시:

name bonus_value
John 1000
Jane 500
Bob 0

5. NVL() (Oracle 전용)

NVL() 함수는 Oracle 데이터베이스에서 사용되며, NULL 값을 대체 값으로 변환하는 데 사용됩니다. NULL 값을 대체할 값을 지정할 수 있습니다.

5.1 NVL() 문법

NVL(값1, 대체값)

  • 값1: NULL인지 확인할 값.
  • 대체값: 값1이 NULL일 경우 반환할 값.

5.2 NVL() 예제

예제: 보너스가 NULL이면 0으로 대체

SELECT name, NVL(bonus, 0) AS bonus_value
FROM employees;

이 쿼리는 bonus 값이 NULL이면 0을 반환합니다.

결과 예시:

name bonus_value
John 1000
Jane 500
Bob 0

6. 실전 예제

예제 1: COALESCE로 연락처 정보 반환

SELECT name, COALESCE(phone, email, 'No Contact Info') AS contact_info
FROM employees;

예제 2: ISNULL로 부서명 처리

SELECT name, ISNULL(department, 'Unknown') AS department_name
FROM employees;

예제 3: NULLIF로 기본 급여와 실제 급여 비교

SELECT name, NULLIF(salary, default_salary) AS adjusted_salary
FROM employees;

예제 4: IFNULL로 NULL 값 대체

SELECT name, IFNULL(bonus, 0) AS bonus_value
FROM employees;

예제 5: NVL로 NULL 값 처리 (Oracle)

SELECT name, NVL(bonus, 0) AS bonus_value
FROM employees;


7. 요약

  • COALESCE(): 여러 값 중 첫 번째로 NULL이 아닌 값을 반환합니다.
  • ISNULL(): 첫 번째 값이 NULL일 때, 지정한 대체 값을 반환합니다.
  • NULLIF(): 두 값이 같으면 NULL을 반환하고, 다르면 첫 번째 값을 반환합니다.
  • IFNULL(): 첫 번째 값이 NULL일 때 두 번째 값을 반환합니다 (MySQL 전용).
  • NVL(): Oracle에서 사용되는 함수로, NULL 값을 대체할 값을 반환합니다.

이 함수들은 NULL 값을 적절하게 처리하는 데 필수적이며, 데이터를 분석하거나 처리할 때 유용하게 사용됩니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com