カテゴリ:

条件式関数

IFF

単一レベルの if-then-else 式です。 CASE と似ていますが、1つの条件のみを許可します。

condition が TRUE に評価される場合、 expr1 を返します。それ以外の場合は expr2 を返します。

構文

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

引数

condition

条件は、 BOOLEAN 値(True、False、または NULL)に評価される必要がある式です。

expr1

一般的な式です。この値は、 condition が真の場合に返されます。

expr2

一般的な式です。この値は、 condition が真でない場合(偽または NULLの場合)に返されます。

使用上の注意

  • condition には、 UNIONINTERSECTEXCEPTMINUS などの集合演算子を含む SELECT ステートメントを含めることができます。セット演算子を使用する場合は、データ型に互換性があることを確認してください。詳細については、 集合演算子 トピックの 一般的な使用上の注意 をご参照ください。

照合の詳細

関数から返される値は、 THEN/ELSE 引数の最高の 優先度 照合の照合指定を保持します。

次の例は、 IFF 関数を示しています。

select iff(True, 'true', 'false');
+----------------------------+
| IFF(TRUE, 'TRUE', 'FALSE') |
|----------------------------|
| true                       |
+----------------------------+
Copy
select iff(False, 'true', 'false');
+-----------------------------+
| IFF(FALSE, 'TRUE', 'FALSE') |
|-----------------------------|
| false                       |
+-----------------------------+
Copy
select iff(NULL, 'true', 'false');
+----------------------------+
| IFF(NULL, 'TRUE', 'FALSE') |
|----------------------------|
| false                      |
+----------------------------+
Copy
SELECT val, IFF(val::int = val, 'integer', 'non-integer')
    FROM ( SELECT column1 as val
               FROM values(1.0), (1.1), (-3.1415), (-5.000), (null) )
    ORDER BY val DESC;
+---------+-----------------------------------------------+
|     VAL | IFF(VAL::INT = VAL, 'INTEGER', 'NON-INTEGER') |
|---------+-----------------------------------------------|
|    NULL | non-integer                                   |
|  1.1000 | non-integer                                   |
|  1.0000 | integer                                       |
| -3.1415 | non-integer                                   |
| -5.0000 | integer                                       |
+---------+-----------------------------------------------+
Copy