Compartilhar via


IIF (Transact-SQL)

Retorna um de dois valores, dependendo de a expressão booliana ser avaliada como true ou false no SQL Server 2012.

Ícone de vínculo de tópico Convenções da sintaxe Transact-SQL

Sintaxe

IIF ( boolean_expression, true_value, false_value )

Argumentos

  • boolean_expression
    Uma expressão Booliana válida.

    Se esse argumento não for uma expressão Booliana, será gerado um erro de sintaxe.

  • true_value
    Valor a ser retornado se boolean_expression for avaliada como true.

  • false_value
    Valor a ser retornado se boolean_expression for avaliada como false.

Tipos de retorno

Retorna o tipo de dados com a precedência mais alta dos tipos em true_value e false_value. Para obter mais informações, consulte Precedência de tipo de dados (Transact-SQL).

Comentários

IIF é uma forma abreviada de escrever uma expressão CASE. Avalia a expressão Booliana passada pelo primeiro argumento e retorna qualquer um dos outros dois argumentos com base no resultado da avaliação. Isto é, true_value será retornado se a expressão booliana for verdadeira, e false_value será retornado se a expressão booliana for falsa ou desconhecida. true_value e false_value podem ser de qualquer tipo. As mesmas regras que se aplicam à expressão CASE para expressões boolianas, manipulação de nulos e tipos de retorno também se aplicam a IIF. Para obter mais informações, consulte CASE (Transact-SQL).

O fato de IIF ser convertido em CASE também tem um impacto sobre outros aspectos do comportamento dessa função. Como as expressões CASE podem ser aninhadas apenas até o nível de 10, as instruções IIF também podem ser aninhadas apenas até o nível máximo de 10. Além disso, IIF é remota para outros servidores como uma expressão CASE semanticamente equivalente, com todos os comportamentos de uma expressão CASE remota.

Exemplos

A.Exemplo de IIF simples

DECLARE @a int = 45, @b int = 40;
SELECT IIF ( @a > @b, 'TRUE', 'FALSE' ) AS Result;

Aqui está o conjunto de resultados.

Result
--------
TRUE

(1 row(s) affected)

B.IIF com constantes NULL

SELECT IIF ( 45 > 30, NULL, NULL ) AS Result;

O resultado dessa instrução é um erro.

C.IIF com parâmetros NULL

DECLARE @P INT = NULL, @S INT = NULL;
SELECT IIF ( 45 > 30, @p, @s ) AS Result;

Aqui está o conjunto de resultados.

Result
--------
NULL

(1 row(s) affected)

Consulte também

Referência

CASE (Transact-SQL)

CHOOSE (Transact-SQL)