- 03/14/2017
- 2 minuti per leggere
-
- c
- k
- r
- P
- i
-
+5
Si applica a: QL Server (tutte le versioni supportate) Azure SQL Database
Riporta uno dei due valori, a seconda che l’espressione booleana valuti vero o falso in SQL Server.
Convenzioni sintassi Transact-SQL
Sintassi
IIF( boolean_expression, true_value, false_value )
Nota
Per vedere la sintassi Transact-SQL per SQL Server 2014 e precedenti, vedere la documentazione delle versioni precedenti.
Argomenti
espressione_boole
Un’espressione booleana valida.
Se questo argomento non è un’espressione booleana, viene sollevato un errore di sintassi.
valore_vero
Valore da restituire se l’espressione_boole è vera.
false_value
Valore da restituire se l’espressione booleana valuta false.
Tipi di ritorno
Ritorna il tipo di dati con la precedenza più alta tra i tipi in true_value e false_value. Per maggiori informazioni, vedere Precedenza del tipo di dati (Transact-SQL).
Rimane
IIF è un modo abbreviato per scrivere un’espressione CASE. Valuta l’espressione booleana passata come primo argomento, e poi restituisce uno degli altri due argomenti in base al risultato della valutazione. Cioè, il valore_vero viene restituito se l’espressione booleana è vera, e il valore_falso viene restituito se l’espressione booleana è falsa o sconosciuta. valore_vero e valore_falso possono essere di qualsiasi tipo. Le stesse regole che si applicano all’espressione CASE per le espressioni booleane, la gestione dei null e i tipi di ritorno si applicano anche a IIF. Per maggiori informazioni, vedere CASE (Transact-SQL).
Il fatto che IIF sia tradotto in CASE ha anche un impatto su altri aspetti del comportamento di questa funzione. Poiché le espressioni CASE possono essere annidate solo fino al livello 10, anche le dichiarazioni IIF possono essere annidate solo fino al livello massimo di 10. Inoltre, IIF è rimandato ad altri server come un’espressione CASE semanticamente equivalente, con tutti i comportamenti di un’espressione CASE rimandata.
Esempi
A. Esempio di IIF semplice
DECLARE @a INT = 45, @b INT = 40;SELECT = IIF( @a > @b, 'TRUE', 'FALSE' );
Ecco l’insieme dei risultati.
Result -------- TRUE
B. IIF con costanti NULL
SELECT = 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 = IIF( 45 > 30, @P, @S );
Ecco l’insieme dei risultati.
Result -------- NULL
Vedi anche
CASE (Transact-SQL)
CHOOSE (Transact-SQL)