Funzioni logiche – IIF (Transact-SQL)

  • 03/14/2017
  • 2 minuti per leggere
    • c
    • k
    • r
    • P
    • i
    • +5

Si applica a: siQL Server (tutte le versioni supportate) siAzure SQL Database

Riporta uno dei due valori, a seconda che l’espressione booleana valuti vero o falso in SQL Server.

Icona collegamento argomento 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)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *