카테고리:

조건식 함수

IFF

부울 식이 참 또는 거짓으로 평가되는지에 따라 두 값 중 하나를 반환합니다. 이 함수는 단일 레벨 if-then-else 식과 유사합니다. 이는 CASE 와 유사하지만, 단일 조건만 허용합니다. 이를 사용하여 SQL 문에 조건부 논리를 추가할 수 있습니다.

구문

IFF( <condition> , <expr1> , <expr2> )
Copy

인자

condition

조건은 BOOLEAN 값(TRUE, FALSE 또는 NULL)으로 평가되어야 하는 식입니다..

condition 이 TRUE로 평가되는 경우 expr1 을 반환하고, 그렇지 않은 경우 expr2 를 반환합니다.

expr1

일반적인 식입니다. condition 이 true인 경우, 이 값이 반환됩니다.

expr2

일반적인 식입니다. condition 이 true가 아닌 경우(즉, false 또는 NULL인 경우), 이 값이 반환됩니다.

반환

이 함수는 VARCHAR 데이터 타입의 값을 반환합니다.

사용법 노트

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

데이터 정렬 세부 정보

함수에서 반환된 값은 expr1expr2 인자 중 우선 순위 가 가장 높은 데이터 정렬의 데이터 정렬 사양을 유지합니다.

다음 예제에서는 IFF 함수를 사용합니다.

조건이 true로 평가되므로 expr1 을 반환합니다.

SELECT IFF(TRUE, 'true', 'false');
Copy
+----------------------------+
| IFF(TRUE, 'TRUE', 'FALSE') |
|----------------------------|
| true                       |
+----------------------------+

조건이 false로 평가되므로 expr2 를 반환합니다.

SELECT IFF(FALSE, 'true', 'false');
Copy
+-----------------------------+
| IFF(FALSE, 'TRUE', 'FALSE') |
|-----------------------------|
| false                       |
+-----------------------------+

조건이 NULL로 평가되므로 expr2 를 반환합니다.

SELECT IFF(NULL, 'true', 'false');
Copy
+----------------------------+
| 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;
Copy
+---------+---------------------------------------------------+
|   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) );
Copy
+-------+--------------------------------+
| VALUE | IFF(VALUE > 50, 'HIGH', 'LOW') |
|-------+--------------------------------|
|    22 | Low                            |
|    63 | High                           |
|     5 | Low                            |
|    99 | High                           |
|  NULL | Low                            |
+-------+--------------------------------+