- 类别:
IFF¶
根据布尔表达式的计算结果是 Ture 还是 False,返回两个值中的一个。此函数类似于单级 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 数据类型的值。
使用说明¶
排序规则详细信息¶
从该函数返回的值会保留 expr1
和 expr2
实参的最高 优先级 排序规则的排序规则规范。
示例¶
以下示例使用 IFF
函数。
由于条件的计算结果为 Ture,故返回 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),则返回:samp:{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 |
+-------+--------------------------------+