- 카테고리:
IFF¶
부울 식이 참 또는 거짓으로 평가되는지에 따라 두 값 중 하나를 반환합니다. 이 함수는 단일 레벨 if-then-else
식과 유사합니다. 이는 CASE 와 유사하지만, 단일 조건만 허용합니다. 이를 사용하여 SQL 문에 조건부 논리를 추가할 수 있습니다.
구문¶
IFF( <condition> , <expr1> , <expr2> )
인자¶
condition
조건은 BOOLEAN 값(TRUE, FALSE 또는 NULL)으로 평가되어야 하는 식입니다..
condition
이 TRUE로 평가되는 경우expr1
을 반환하고, 그렇지 않은 경우expr2
를 반환합니다.expr1
일반적인 식입니다.
condition
이 true인 경우, 이 값이 반환됩니다.expr2
일반적인 식입니다.
condition
이 true가 아닌 경우(즉, false 또는 NULL인 경우), 이 값이 반환됩니다.
반환¶
이 함수는 VARCHAR 데이터 타입의 값을 반환합니다.
사용법 노트¶
condition
은 UNION, INTERSECT, EXCEPT, MINUS 같은 세트 연산자가 있는 SELECT 문을 포함할 수 있습니다. 세트 연산자를 사용할 때 데이터 타입이 호환되는지 확인하십시오. 자세한 내용은 세트 연산자 항목의 일반적인 사용법 노트 를 참조하십시오.
데이터 정렬 세부 정보¶
함수에서 반환된 값은 expr1
및 expr2
인자 중 우선 순위 가 가장 높은 데이터 정렬의 데이터 정렬 사양을 유지합니다.
예¶
다음 예제에서는 IFF
함수를 사용합니다.
조건이 true로 평가되므로 expr1
을 반환합니다.
SELECT IFF(TRUE, 'true', 'false');
+----------------------------+
| IFF(TRUE, 'TRUE', 'FALSE') |
|----------------------------|
| true |
+----------------------------+
조건이 false로 평가되므로 expr2
를 반환합니다.
SELECT IFF(FALSE, 'true', 'false');
+-----------------------------+
| IFF(FALSE, 'TRUE', 'FALSE') |
|-----------------------------|
| false |
+-----------------------------+
조건이 NULL로 평가되므로 expr2
를 반환합니다.
SELECT IFF(NULL, 'true', 'false');
+----------------------------+
| IFF(NULL, 'TRUE', 'FALSE') |
|----------------------------|
| false |
+----------------------------+
값이 정수인 경우 expr1
(integer
)을 반환하고, 정수가 아닌 경우 expr2
(non-integer
)를 반환합니다.
SELECT value, IFF(value::INT = value, 'integer', 'non-integer')
FROM ( SELECT column1 AS value
FROM VALUES(1.0), (1.1), (-3.1415), (-5.000), (NULL) )
ORDER BY value DESC;
+---------+---------------------------------------------------+
| VALUE | IFF(VALUE::INT = VALUE, 'INTEGER', 'NON-INTEGER') |
|---------+---------------------------------------------------|
| NULL | non-integer |
| 1.1000 | non-integer |
| 1.0000 | integer |
| -3.1415 | non-integer |
| -5.0000 | integer |
+---------+---------------------------------------------------+
값이 50보다 크면 expr1
(High
)을 반환하고, 50보다 작거나 같으면(또는 NULL) expr2
(Low
)를 반환합니다.
SELECT value, IFF(value > 50, 'High', 'Low')
FROM ( SELECT column1 AS value
FROM VALUES(22), (63), (5), (99), (NULL) );
+-------+--------------------------------+
| VALUE | IFF(VALUE > 50, 'HIGH', 'LOW') |
|-------+--------------------------------|
| 22 | Low |
| 63 | High |
| 5 | Low |
| 99 | High |
| NULL | Low |
+-------+--------------------------------+