- 03/14/2017
- 2 minutos para ler
- ul>
- >c
- k
- r
- P
- i
-
+5
p>P>P>Pera a SQL Server (todas as versões suportadas) Azure SQL Database
Retorna um de dois valores, dependendo se a expressão booleana se avalia como verdadeira ou falsa no SQL Server.
Convenções de Sintaxe Transact-SQL
Sintaxe
IIF( boolean_expression, true_value, false_value )
Nota
Para ver a sintaxe Transact-SQL para o SQL Server 2014 e versões anteriores, ver documentação das versões anteriores.
Argumentos
expressão_booleana
Uma expressão booleana válida.
Se este argumento não for uma expressão booleana, então um erro de sintaxe é levantado.
valor_verdadeiro
Valor a retornar se a expressão booleana for avaliada como verdadeira.
valor_falso
Valor a retornar se a expressão booleana avaliar como falso.
Tipos de retorno
Retorna o tipo de dados com a maior precedência dos tipos em verdadeiro_valor e falso_valor. Para mais informações, ver Precedência do tipo de dados (Transact-SQL).
Remarks
IIF é uma forma abreviada de escrever uma expressão CASE. Avalia a expressão booleana passada como o primeiro argumento, e depois devolve qualquer um dos outros dois argumentos com base no resultado da avaliação. Ou seja, o verdadeiro_valor é devolvido se a expressão booleana for verdadeira, e o falso_valor é devolvido se a expressão booleana for falsa ou desconhecida. verdadeiro_valor e falso_valor podem ser de qualquer tipo. As mesmas regras que se aplicam à expressão CASO para expressões booleanas, manipulação nula, e tipos de retorno também se aplicam ao IIF. Para mais informações, ver CASE (Transact-SQL).
O facto de o IIF ser traduzido para CASE também tem um impacto sobre outros aspectos do comportamento desta função. Uma vez que as expressões CASE só podem ser aninhadas até ao nível 10, as declarações IIF também só podem ser aninhadas até ao nível máximo de 10. Além disso, a IIF é removida para outros servidores como uma expressão CASE semanticamente equivalente, com todos os comportamentos de uma expressão CASE removida.
Exemplos
A. Exemplo simples de IIF
DECLARE @a INT = 45, @b INT = 40;SELECT = IIF( @a > @b, 'TRUE', 'FALSE' );
Aqui está o resultado definido.
Result -------- TRUE
B. IIF com constantes NULL
SELECT = IIF( 45 > 30, NULL, NULL );
O resultado desta afirmação é um erro.
C. IIF com parâmetros NULL
DECLARE @P INT = NULL, @S INT = NULL; SELECT = IIF( 45 > 30, @P, @S );
Aqui está o resultado definido.
Result -------- NULL
Ver Também
CASE (Transact-SQL)
CHOOSE (Transact-SQL)