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

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do AzureEndpoint de SQL Analytics no Microsoft FabricArmazém no Microsoft FabricBanco de Dados SQL no Microsoft Fabric

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

Convenções de sintaxe de 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, um erro de sintaxe será gerado.

true_value

Valor a ser retornado se boolean_expression for avaliada como verdadeira.

false_value

Valor a ser retornado se boolean_expression for avaliada como falsa.

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, confira Precedência de tipo de dados (Transact-SQL).

Comentários

IIF é uma forma abreviada de gravar 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. Ou seja, o true_value será retornado se a expressão booliana for verdadeira e o 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, confira 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.

O IIF não tem suporte em pools de SQL dedicados no Azure Synapse Analytics.

Exemplos

a. Exemplo de IIF simples

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

Veja a seguir o conjunto de resultados.

Result  
--------  
TRUE  

B. IIF com constantes NULL

SELECT [Result] = IIF( 45 > 30, NULL, NULL );

O resultado dessa instrução é um erro.

C. IIF com parâmetros NULL

DECLARE @P INT = NULL, @S INT = NULL;  
SELECT [Result] = IIF( 45 > 30, @P, @S );

Veja a seguir o conjunto de resultados.

Result  
--------  
NULL  

Próximas etapas