- Categorias:
IFF¶
Retorna um de dois valores dependendo se uma expressão booleana é avaliada como verdadeira ou falsa. Esta função é semelhante a uma expressão de nível único if-then-else. É semelhante a CASE, mas só permite uma única condição. Você pode usá-lo para adicionar lógica condicional a instruções SQL.
Sintaxe¶
IFF( <condition> , <expr1> , <expr2> ) Argumentos¶
conditionA condição é uma expressão que deve ser avaliada como um valor BOOLEAN (TRUE, FALSE ou NULL).
Se
conditioné avaliado como TRUE, retornaexpr1, caso contrário retornaexpr2.expr1Uma expressão geral. A função retorna este valor se o endereço
conditionfor verdadeiro.expr2Uma expressão geral. A função retorna este valor se o
conditionnão for verdadeiro (ou seja, se for falso ou NULL).
Retornos¶
Esta função pode retornar um valor de qualquer tipo. A função pode retornar NULL se o valor da expressão retornada for NULL.
Notas de uso¶
condition pode incluir uma instrução SELECT contendo operadores definidos, tais como UNION, INTERSECT e EXCEPT (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 expr1 e expr2.
Exemplos¶
Os exemplos a seguir usam a função IFF.
Retorne expr1 porque a condição é avaliada como verdadeira:
SELECT IFF(TRUE, 'true', 'false'); +----------------------------+ | IFF(TRUE, 'TRUE', 'FALSE') | |----------------------------| | true | +----------------------------+ Retorne expr2 porque a condição é avaliada como falsa:
SELECT IFF(FALSE, 'true', 'false'); +-----------------------------+ | IFF(FALSE, 'TRUE', 'FALSE') | |-----------------------------| | false | +-----------------------------+ Retorne expr2 porque a condição é avaliada como NULL:
SELECT IFF(NULL, 'true', 'false'); +----------------------------+ | IFF(NULL, 'TRUE', 'FALSE') | |----------------------------| | false | +----------------------------+ Retorna NULL porque o valor da expressão retornada é NULL:
SELECT IFF(TRUE, NULL, 'false'); +--------------------------+ | IFF(TRUE, NULL, 'FALSE') | |--------------------------| | NULL | +--------------------------+ Retorne expr1 (integer) se o valor for um inteiro, ou retorne expr2 (non-integer) se o valor não for um inteiro:
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 | +---------+---------------------------------------------------+ Retorne expr1 (High) se o valor for maior que 50, ou retorne expr2 (Low) se o valor for 50 ou menor (ou 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 | +-------+--------------------------------+