La funzione SQL IIF è la nuova funzione logica integrata introdotta in SQL Server 2012. Possiamo considerare SQL Server IIF come il modo stenografico di scrivere IF Else e CASE statements.
La funzione SQL Server IIF accetterà tre argomenti. Il primo argomento è l’espressione booleana, che restituisce true o false. Se l’espressione IIF risulta VERA, il secondo argomento verrà restituito come risultato. Altrimenti, il terzo argomento tornerà come output., Vediamo la sintassi della funzione IIF di SQL Server:
Sintassi della funzione logica SQL IIF:
La sintassi dell’IIF in SQL Server è la seguente:
IIF (Boolean_Expression, True_Value, Flase_Value)
Se l’espressione booleana data (o condizione di test) è vera, restituirà True_Value. E se è falso, verrà restituito False_Value.
SQL IIF Confrontando due interi
Questo esempio ti mostrerà la funzionalità di lavoro della funzione IIF in SQL Server
SELECT IIF(10 > 5, 'TRUE', 'FALSE') AS Result;
Dallo screenshot qui sotto, puoi osservare quella condizione all’interno della funzione IIF (cioè,, 10> 5) è VERO. Così, la prima affermazione (o come secondo parametro restituito come output, che è VERO
SQL IIF Confrontare due variabili integer
In questo esempio, useremo la funzione IIF per trovare se la persona ha il diritto di votare o meno.
Dallo screenshot qui sotto puoi osservare che,
- All’interno della prima istruzione SELECT, la condizione all’interno della funzione IIF (cioè, 12 > 18) è falsa., Quindi, la seconda istruzione (o terzo argomento) restituita come output
- All’interno della seconda istruzione SELECT, condizione all’interno della funzione IIF (cioè, 34 > 18) è true. Quindi, la prima istruzione (o il secondo argomento) ha restituito come output
SQL IIF Confronta due stringhe
In questo esempio, useremo la funzione SQL Server IIF per confrontare i dati della stringa. Qui, abbiamo usato il carattere jolly ‘ % ‘ all’interno della seconda istruzione SELECT., Quindi, ti suggerisco di fare riferimento a SQL COME articolo in SQL Server per ulteriori riferimenti.
Esempio IIF nidificato SQL
In questo esempio, useremo la funzione IIF nidificato Sql Server per scoprire se la persona è idonea a lavorare o meno.
- Per prima cosa, abbiamo dichiarato una variabile intera chiamata @age e assegnato un valore.
- All’interno della funzione IIF (), la prima condizione verifica se l’età è inferiore a 18 anni., Se questa condizione è Vera, restituirà la prima istruzione (o il secondo argomento) dopo la virgola, che è che sei troppo giovane per lavorare
- Quando la prima condizione fallisce, restituisce la seconda istruzione (o il terzo argomento). Utilizzando IIF nidificato SQL Server, stiamo controllando un’altra condizione qui (@age >= 18 E @age < = 60)., Se questa condizione è Vera, restituisce il primo valore dopo la virgola, che è che sei idoneo a lavorare
- Se la condizione nidificata fallisce, eseguirà il valore al terzo argomento, che è che sei troppo vecchio per lavorare.,
USCITA 1: Età = 12
Età = 32
Età = 65
SQL IIF Lavorare con valori NULL
sarebbe meglio se si è stati attenti mentre si lavora con valori NULL all’interno della funzione IIF. Le seguenti serie di esempi ti aiuteranno a capire le conseguenze.,
SELECT IIF(10 > 5, NULL, NULL) AS Result;
Dallo screenshot qui sopra, è possibile osservare che sta generando un errore. Dicendo che almeno una delle espressioni del risultato (cioè, secondo o terzo argomento dopo Boolean_Expression) deve essere un’espressione diversa dalla costante NULL., Cambiamoli di conseguenza e vediamo
SELECT IIF(10 > 5, 'TRUE', NULL) AS Result1;SELECT IIF(10 > 5, NULL, 'FALSE') AS Result2;
SQL IIF NULL values Option 2
Possiamo superare gli errori che si sono verificati le costanti NULL nella funzione IIF utilizzando i parametri.
DECLARE @a INT = NULL, @b INT = NULL SELECT IIF ( 10 > 5, @a, @b ) AS Result1;
Tipo di dati IIF con la precedenza più alta
La funzione IIF restituirà il tipo di dati con la precedenza più alta., Dall’esempio seguente, il risultato sarà il terzo argomento (cioè 100) di tipo integer, ma il risultato sta visualizzando 100.00. Poiché la funzione IIF restituirà il tipo di dati con la precedenza più alta.
SELECT IIF ( 15 > 50, 12.45, 100 ) AS Result;
Fare riferimento agli articoli IF Else e CASE Statement.