SQL Server 2012 ha introdotto la nuova funzione logica IIF (). Il comportamento della funzione IIF () è abbastanza simile alle istruzioni CASE e IF in SQL Server. Usando IIF (), puoi usare meno righe di codice e il tuo codice sarà più leggibile.
Esploriamo la funzione IIF () con alcuni esempi.
IIF () - Function restituisce uno dei due valori, a seconda che l'espressione booleana specificata sia vera o falsa.
Sintassi: IIF (boolean_expression, true_value, false_value)
• Il primo argomento (boolean_expression) accetta l'espressione booleana da valutare.
• La funzione restituisce il secondo argomento (true_value), se l'espressione booleana viene valutata su true.
• La funzione restituirà il terzo argomento (valore_ falso) significa che l'espressione booleana non è riuscita.
Vediamo alcune query SQL veloci con la funzione IIF ()
Esempio 1.1: Confronta due numeri con IIF ()
SELECT IIF (1> 0, 'True', 'False') AS Output 'GO Output ------ True
Esempio 1.2: confronta due date con IIF ()
SELECT IIF ('10 / 15/2012 '> '01 / 01/2012', 'Sì', 'No') AS Uscita 'GO Output ------ Sì
Esempio 1.3: confrontare due variabili intere con IIF ()
DICHIARARE @ NUM1 INT INT = 150 DICHIARARE @ NUM2 INT INT = 100 SELEZIONA IIF (@ num1 <@ num2, 'True', 'False') AS Uscita 'GO Output ------ False
Esempio 1.4: confronta due stringhe con IIF ()
La maggior parte di voi si chiede perché dovremmo usare IIF () su istruzioni CASE e IF.
IIF () sembra più leggibile, è più semplice da creare e ha meno righe di codici rispetto alle istruzioni CASE e IF.
Confrontiamo i vari metodi di confronto di due stringhe usando la funzione IF, CASE e IIF ().
DECLARE @str as varchar (20) = 'tech-recipes' se (@str = 'tech-recipes') seleziona 'Yes' AS 'OUTPUT' ELSE seleziona 'No' AS 'OUTPUT' GO OUTOUT ------ sì
DECLARE @str AS varchar (20) = 'tech-recipes' seleziona CASE quando @ str = 'tech-recipes' THEN 'Sì' ELSE 'No' END AS 'Uscita' VAI OUTPUT ------ Sì
DECLARE @str as varchar (20) = 'tech-recipes' seleziona IIF (@str = 'tech-recipes', 'yes', 'no') come OUTPUT GO OUTPUT ------ Sì
Le tre query precedenti utilizzando la funzione IF, CASE e IIF () fanno la stessa cosa e restituiscono lo stesso risultato. Tuttavia, l'utilizzo di IIF () è più facile e più leggibile.