Partilhar via


Funções Lógicas - IIF (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Devolve um de dois valores, dependendo se a expressão booleana é avaliada como verdadeira ou falsa no SQL Server.

Transact-SQL convenções de sintaxe

Sintaxe

IIF( boolean_expression, true_value, false_value )

Arguments

boolean_expression

Uma expressão booleana válida.

Se este argumento não for uma expressão booleana, então surge um erro de sintaxe.

true_value

Valor a devolver se boolean_expression avaliar como verdadeiro.

false_value

Valor a devolver se boolean_expression for avaliado como falso.

Tipos de devolução

Devolve o tipo de dado com maior precedência em relação aos tipos em true_value e false_value. Para obter mais informações, consulte Precedência de Tipos de Dados (Transact-SQL).

Observações

IIF é uma forma abreviada de escrever uma expressão CASE. Avalia a expressão booleana passada como primeiro argumento e depois retorna qualquer um dos outros dois argumentos com base no resultado da avaliação. Ou seja, o true_value é devolvido se a expressão booleana for verdadeira, e o false_value é devolvido se a expressão booleana 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 booleanas, tratamento de nulos e tipos de retorno também se aplicam ao IIF. Para mais informações, consulte CASE (Transact-SQL).

O facto de a IIF ser traduzida em CASE também tem impacto noutros aspetos do comportamento desta função. Como as expressões CASE só podem ser aninhadas até ao nível 10, as instruções IIF também podem ser aninhadas apenas até ao nível máximo de 10. Além disso, a IIF é remotamente enviada para outros servidores como uma expressão CASE semanticamente equivalente, com todos os comportamentos de uma expressão CASE remota.

O IIF não é suportado em pools SQL dedicados no Azure Synapse Analytics.

Examples

A. Exemplo simples de IIF

DECLARE @a INT = 45, @b INT = 40;
SELECT [Result] = IIF( @a > @b, 'TRUE', 'FALSE' );

Aqui está o conjunto de resultados.

Result  
--------  
TRUE  

B. IIF com constantes NULL

SELECT [Result] = 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 [Result] = IIF( 45 > 30, @P, @S );

Aqui está o conjunto de resultados.

Result  
--------  
NULL  

Próximos passos