Funzioni logiche - IIF (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure

Viene restituito uno di due valori a seconda che l'espressione booleana sia true o false in SQL Server.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

IIF( boolean_expression, true_value, false_value )

Argomenti

boolean_expression

Espressione booleana valida.

Se questo argomento non è un'espressione booleana, viene generato un errore di sintassi.

true_value

Valore da restituire se boolean_expression restituisce true.

false_value

Valore da restituire se boolean_expression restituisce false.

Tipi restituiti

Restituisce il tipo di dati con precedenza maggiore nei tipi true_value e false_value. Per altre informazioni, vedere Precedenza dei tipi di dati (Transact-SQL).

Osservazioni:

IIF è un modo abbreviato per scrivere un'espressione CASE. Valuta l'espressione booleana passata come primo argomento, quindi restituisce uno dei due argomenti in base al risultato della valutazione. Viene quindi restituito true_value se l'espressione booleana è true, mentre viene restituito false_value se l'espressione booleana è false o sconosciuta. true_value e false_value possono essere di qualsiasi tipo. Le stesse regole applicate all'espressione CASE per espressioni booleane, gestione di valori Null e tipi restituiti vengono applicate anche a IIF. Per altre informazioni, vedere CASE (Transact-SQL).

La conversione di IIF in CASE influisce inoltre su altri aspetti del comportamento di questa funzione. Poiché le espressioni CASE possono essere nidificate solo fino a livello 10, anche le istruzioni IIF possono essere nidificate fino al livello massimo 10. Inoltre l'istruzione IIF viene eseguita in modalità remota in altri server come un'espressione CASE equivalente dal punto di vista semantico, con tutti i comportamenti di un'espressione CASE eseguita in modalità remota.

IIF non è supportato nei pool SQL dedicati in Azure Synapse Analytics.

Esempi

R. Esempio semplice di IIF

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

Il set di risultati è il seguente.

Result  
--------  
TRUE  

B. IIF con costanti NULL

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

Il risultato di questa istruzione è un errore.

C. IIF con parametri NULL

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

Il set di risultati è il seguente.

Result  
--------  
NULL  

Passaggi successivi