- 카테고리:
IFNULL¶
expr1 이 NULL인 경우 expr2 를 반환하고, 그렇지 않으면 expr1 을 반환합니다.
- 별칭:
구문¶
IFNULL( <expr1> , <expr2> )
인자¶
expr1일반적인 식입니다.
expr2일반적인 식입니다.
사용법 노트¶
Snowflake performs implicit conversion of arguments to make them compatible. For example, if one of the input expressions is a numeric type, the return type is also a numeric type. That is,
SELECT IFNULL('17', 1);first converts the VARCHAR value'17'to the NUMBER value17, and then returns the first non-NULL value.When conversion isn’t possible, implicit conversion fails. For example,
SELECT IFNULL('foo', 1);returns an error because the VARCHAR value'foo'can’t be converted to a NUMBER value.We recommend passing in arguments of the same type or explicitly converting arguments if needed.
When implicit conversion converts a non-numeric value to a numeric value, the result is a value of type NUMBER(18,5).
상수가 아닌 숫자형 문자열 인자의 경우 NUMBER(18,5)가 숫자 값을 나타내기에 충분하지 않으면 해당 값을 나타낼 수 있는 형식으로 인자를 형 변환 해야 합니다.
두 식 모두
UNION,INTERSECT,EXCEPT,MINUS같은 세트 연산자가 있는SELECT문을 포함할 수 있습니다. 세트 연산자를 사용할 때 데이터 타입이 호환되는지 확인하십시오. 자세한 내용은 세트 연산자 항목의 일반적인 사용법 노트 를 참조하십시오.
데이터 정렬 세부 정보¶
The collation specifications of all input arguments must be compatible.
The collation of the result of the function is the highest-precedence collation of the inputs.
반환¶
반환 식의 데이터 타입을 반환합니다.
두 식이 모두 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));
테이블에는 서로 다른 두 리전의 각 공급자에 대한 전화번호가 포함됩니다. 전화번호는 리전에 따라 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);
다음 SELECT 문은 IFNULL 함수를 사용하여 phone_region_1 및 phone_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_1및phone_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;
+-------------+---------------+----------------+----------------+------------------+------------------+
| 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 |
+-------------+---------------+----------------+----------------+------------------+------------------+