Condividi tramite


IIF (Transact-SQL)

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

Icona di collegamento a un argomento Convenzioni della 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 è true.

  • false_value
    Valore da restituire se boolean_expression è false.

Tipi restituiti

Restituisce il tipo di dati con precedenza maggiore nei tipi true_value e false_value. Per ulteriori 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 pertanto 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 tipo qualsiasi. Le stesse regole applicate all'espressione CASE per espressioni booleane, gestione di valori Null e tipi restituiti vengono applicate anche a IIF. Per ulteriori 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.

Esempi

A.Esempio semplice di IIF

DECLARE @a int = 45, @b int = 40;
SELECT IIF ( @a > @b, 'TRUE', 'FALSE' ) AS Result;

Set di risultati:

Result
--------
TRUE

(1 row(s) affected)

B.IIF con costanti NULL

SELECT IIF ( 45 > 30, NULL, NULL ) AS Result;

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 ) AS Result;

Set di risultati:

Result
--------
NULL

(1 row(s) affected)

Vedere anche

Riferimento

CASE (Transact-SQL)

CHOOSE (Transact-SQL)