카테고리:

조건식 함수

IFNULL

expr1 이 NULL인 경우 expr2 를 반환하고, 그렇지 않으면 expr1 을 반환합니다.

별칭:

NVL

구문

IFNULL( <expr1> , <expr2> )
Copy

인자

expr1

일반적인 식입니다.

expr2

일반적인 식입니다.

사용법 노트

  • 가능하면 같은 유형의 인자를 전달하십시오. 다른 유형의 인자는 전달하지 않도록 하십시오.

  • 인자 중 하나가 숫자인 경우 이 함수는 숫자가 아닌 문자열 인자(예: 'a string')와 상수가 아닌 문자열 인자를 NUMBER(18,5) 형식으로 강제 변환 합니다.

    상수가 아닌 숫자형 문자열 인자의 경우 NUMBER(18,5)가 숫자 값을 나타내기에 충분하지 않은 경우 해당 값을 나타낼 수 있는 형식으로 인자를 캐스팅 해야 합니다.

  • 두 식 모두 UNION, INTERSECT, EXCEPT, MINUS 같은 세트 연산자가 있는 SELECT 문을 포함할 수 있습니다. 세트 연산자를 사용할 때 데이터 타입이 호환되는지 확인하십시오. 자세한 내용은 세트 연산자 항목의 일반적인 사용법 노트 를 참조하십시오.

데이터 정렬 세부 정보

반환

반환 식의 데이터 타입을 반환합니다.

두 식이 모두 NULL인 경우에는 NULL을 반환합니다.

공급자의 연락처 정보가 포함된 테이블을 만듭니다.

CREATE TABLE IF NOT EXISTS suppliers (
  supplier_id INT PRIMARY KEY,
  supplier_name VARCHAR(30),
  phone_region_1 VARCHAR(15),
  phone_region_2 VARCHAR(15));
Copy

테이블에는 서로 다른 두 리전의 각 공급자에 대한 전화번호가 포함됩니다. 전화번호는 리전에 따라 NULL일 수 있습니다.

테이블에 값을 삽입합니다.

INSERT INTO suppliers(supplier_id, supplier_name, phone_region_1, phone_region_2)
  VALUES(1, 'Company_ABC', NULL, '555-01111'),
        (2, 'Company_DEF', '555-01222', NULL),
        (3, 'Company_HIJ', '555-01333', '555-01444'),
        (4, 'Company_KLM', NULL, NULL);
Copy

다음 SELECT 문은 IFNULL 함수를 사용하여 phone_region_1phone_region_2 값을 검색합니다.

이 예에서는 IFNULL 함수에 대해 다음 결과를 보여줍니다.

  • IF_REGION_1_NULL 열에는 phone_region_1 의 값이 포함되거나 해당 값이 NULL인 경우 phone_region_2 의 값이 포함됩니다.

  • IF_REGION_2_NULL 열에는 phone_region_2 의 값이 포함되거나 해당 값이 NULL인 경우 phone_region_1 의 값이 포함됩니다.

  • phone_region_1phone_region_2 가 모두 NULL인 경우 함수는 NULL을 반환합니다.

SELECT supplier_id,
       supplier_name,
       phone_region_1,
       phone_region_2,
       IFNULL(phone_region_1, phone_region_2) IF_REGION_1_NULL,
       IFNULL(phone_region_2, phone_region_1) IF_REGION_2_NULL
  FROM suppliers
  ORDER BY supplier_id;
Copy
+-------------+---------------+----------------+----------------+------------------+------------------+
| SUPPLIER_ID | SUPPLIER_NAME | PHONE_REGION_1 | PHONE_REGION_2 | IF_REGION_1_NULL | IF_REGION_2_NULL |
|-------------+---------------+----------------+----------------+------------------+------------------|
|           1 | Company_ABC   | NULL           | 555-01111      | 555-01111        | 555-01111        |
|           2 | Company_DEF   | 555-01222      | NULL           | 555-01222        | 555-01222        |
|           3 | Company_HIJ   | 555-01333      | 555-01444      | 555-01333        | 555-01444        |
|           4 | Company_KLM   | NULL           | NULL           | NULL             | NULL             |
+-------------+---------------+----------------+----------------+------------------+------------------+