Categorias:

Funções de expressão condicional

IFF

Expressão if-then-else de nível único. Similar a CASE, mas só permite uma única condição.

Se condition é avaliado como TRUE, retorna expr1, caso contrário retorna expr2.

Sintaxe

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

Argumentos

condition

A condição é uma expressão que deve ser avaliada como um valor BOOLEAN (True, False ou NULL).

expr1

Uma expressão geral. Este valor é retornado se o condition for verdadeiro.

expr2

Uma expressão geral. Este valor será devolvido se o condition não for verdadeiro (isto é, se for falso ou NULL).

Notas de uso

  • O condition pode incluir uma instrução SELECT contendo operadores definidos, tais como UNION, INTERSECT, EXCEPT e MINUS. Ao utilizar os operadores do conjunto, certifique-se de que os tipos de dados sejam compatíveis. Para obter mais detalhes, consulte Notas de uso geral no tópico Operadores de conjuntos.

Detalhes do agrupamento

O valor retornado da função retém a especificação de agrupamento do agrupamento com maior precedência dos argumentos THEN/ELSE.

Exemplos

Os exemplos a seguir demonstram a função 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