- カテゴリ:
IFF¶
論理式がtrueと評価されるかfalseと評価されるかに応じて、2つの値のいずれかを返します。この関数は、シングルレベル if-then-else
式に似ています。 CASE と似ていますが、1つの条件のみを許可します。SQL ステートメントに条件ロジックを追加するために使用できます。
構文¶
IFF( <condition> , <expr1> , <expr2> )
引数¶
condition
条件は、 BOOLEAN 値(TRUE、 FALSE、または NULL)に評価される必要がある式です。
condition
が TRUE に評価される場合、expr1
を返します。それ以外の場合はexpr2
を返します。expr1
一般的な式です。この値は、
condition
が真の場合に返されます。expr2
一般的な式です。この値は、
condition
が真でない場合(偽または 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以下の場合は expr2
(Low
)(または NULL)を返します。
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 |
+-------+--------------------------------+