SQL Server 2012 ha introdotto una nuova funzione logica integrata SQL IIF. È una forma abbreviata di scrittura della logica dell’istruzione CASE o della logica IF-ELSE.

Abbiamo esplorato l’istruzione Case in SQL nel mio precedente articolo. Usiamo un’istruzione case per restituire un risultato in base alla condizione definita. È simile a un IF..ELSE statement THEN statement valuta un’espressione e restituisce l’output. L’istruzione case è disponibile in quasi tutte le versioni di SQL Server.

Esploriamo questa funzione SQL IIF in questo articolo.,

Panoramica dell’istruzione SQL IIF

Usiamo il seguente formato per scrivere la logica dell’istruzione Case nelle query SQL

SELEZIONA Espressione CASE Quando espressione1 Quindi Result1 Quando espressione2 Quindi Result2 ELSE ALTRO Risultato FINALE

Possiamo scrivere questo codice usando la sintassi dell’istruzione SQL IIF come segue.

IIF(boolean_expression, true_value, false_value)

  • Boolean_expression: Il primo parametro nell’istruzione SQL IIF è un’espressione booleana., Dovrebbe essere una valida espressione booleana altro si ottiene un’eccezione
  • True_Value: Se boolean_expression è TRUE, restituisce il valore specificato nell’true_value parametro
  • False_Value: Se boolean_expression è FALSO, restituisce il valore specificato nell’false_value parametro

esploriamo SQL istruzione IIF utilizzando esempi.

Esempio 1: istruzione SQL IIF per confrontare i valori interi

Nell’esempio seguente, l’espressione booleana specificata restituisce False ( 2>3 non è TRUE)., Due to this, it returns the value specified in the false_value parameter.

1
SELECT IIF(2 > 3, ‘TRUE’, ‘FALSE’ )

Similarly, if the condition is TRUE (5>3 is TRUE) so it returns the value of true_value parameter.,

1
SELECT IIF(5 > 3, ‘TRUE’, ‘FALSE’ )

Example 2: SQL IIF statement with variables

In the following example, we specified two integer variables and assigned values. We use variables for comparison in the IIF statement.,

1
2

DECLARE @A INT = 80, @B INT = 70
SELECT IIF(@A >= @B, ‘PASS’, ‘FAIL’ )

The specified condition (80>70) is TRUE, so it returns the value PASS.,

Esempio 3: istruzione SQL IIF per confrontare due stringhe

Nel seguente esempio, vogliamo confrontare i dati delle stringhe utilizzando l’istruzione SQL IIF. Vogliamo conoscere la persona simpatia in base al nome della persona.,

1
2

DECLARE @Person Varchar(100) = ‘Raj’
SELECT IIF(@Person=’Raj’,’Likes Apple’,’NA’)

We can specify multiple conditions in SQL IIF statement as well.,i>

  • Else all other persons like orange
  • 1
    2

    DECLARE @Person Varchar(100) = ‘Raj’
    SELECT IIF(@Person in(‘Raj’, ‘Mohan’),’Likes Apple’,’Likes Orange’)

    The query should return Likes Orange if the person name is not in the IN clause., Nell’esempio seguente, person Vinay non esiste nella variabile @ Person, quindi restituisce il valore per una clausola false.

    Esempio 4: Istruzione SQL IIF nidificata

    Possiamo usare anche l’istruzione SQL IIF nidificata per specificare più condizioni

    In questa funzione SQL IIF, controlla la prima condizione e se la condizione è VERA, restituisce il valore. Nel nostro caso, è FALSO (Person Vinay non corrisponde a Raj). Controlla l’altra condizione e restituisce i risultati se è VERO.,

    Se nessuna delle condizioni è vera, restituisce il falso messaggio predefinito.

    Esempio 5: istruzione SQL IIF con una colonna di tabella

    Negli esempi precedenti, specifichiamo i valori direttamente nell’istruzione IIF o le variabili specificate per esso. Di solito, vogliamo usarlo con i dati esistenti in una tabella SQL. Possiamo usare l’istruzione IIF anche con una colonna della tabella.,

    Nell’esempio seguente, vogliamo conoscere il nome del fornitore dalla tabella PurchaseOrders nel database WideWorldImporters.

    Se il nome del fornitore non esiste per un determinato ID fornitore, restituisce il valore falso specificato nell’istruzione SQL IIF.

    Esempio 6: istruzione SQL IIF con una colonna di tabella e funzione aggregata

    Esempio 7: Istruzione SQL IIF e precedenza del tipo di dati

    Potremmo avere diversi tipi di dati per i risultati., Se abbiamo diversi tipi di dati specificati nelle condizioni di risultato, SQL Server fornisce il tipo di dati con la precedenza più alta. Nell’esempio seguente, per la condizione false(11 > 19), il risultato sarà l’argomento false_value, cioè 100. Dovrebbe essere di tipo e dati interi, ma otteniamo l’output 40.0 perché l’altro argomento float (2.6) ha una precedenza elevata rispetto a un numero intero.,

    1
    SELECT IIF(11 > 19, 2.6, 40)

    You can check the data type precedence in the following image

    Example 8: SQL IIF with NULL values

    We should be careful in NULL values inside the SQL IIF function.,

    1
    2
    3

    SELECT
    IIF(100 > 99, NULL, NULL) AS Result;

    We cannot specify NULL in both the true and false arguments. We get the following error message.,

    Msg 8133, Livello 16, Stato 1, Riga 1 Almeno una delle espressioni di risultato in una specifica del CASO deve essere un’espressione diversa dalla costante NULL.

    Nel messaggio di errore, puoi vedere che fornisce informazioni sulle specifiche del CASO, tuttavia abbiamo usato la funzione SQL IIF. Vedremo questo nel prossimo esempio.

    È necessario specificare almeno uno di un argomento vero o falso.,

    1
    2

    SELECT
    IIF(100 > 99, ‘Hello’, NULL) AS Result;

    The similarity between SQL IIF statement and CASE Statement

    In the introduction of SQL IIF Statement, we mentioned that it is a shorthand form of writing CASE statement logic or IF-ELSE logic., Sì, è vero. Internamente SQL Server converte l’istruzione nell’istruzione CASE ed esegue. Possiamo controllarlo usando il piano di esecuzione effettivo di una query.

    Eseguire la query dall’esempio 6 con un piano di esecuzione effettivo.

    Nel piano di esecuzione effettivo, esaminare le proprietà di Calcolo Scalare. Puoi vedere che esegue internamente l’istruzione CASE.

    Conclusione

    In questo articolo, abbiamo esplorato l’istruzione SQL IIF che è un nuovo modo di scrivere le condizioni relative all’istruzione CASE., È disponibile da SQL 2012 in poi. Si dovrebbe esplorare questo per avere familiarità con questo. Se avete commenti o domande, sentitevi liberi di lasciarli nei commenti qui sotto.,

    • Autore
    • Post Recenti
    Come un certificato MCSA e Microsoft Certified Trainer a Gurgaon, in India, con 13 anni di esperienza, Rajendra collabora con una serie di grandi imprese di messa a fuoco sull’ottimizzazione delle prestazioni, il monitoraggio, l’alta disponibilità e disaster recovery per le strategie e l’attuazione., È autore di centinaia di articoli autorevoli su SQL Server, Azure, MySQL, Linux, Power BI, Performance tuning, AWS/Amazon RDS, Git e tecnologie correlate che sono stati visti da oltre 10 milioni di lettori fino ad oggi.
    È il creatore di una delle più grandi collezioni online gratuite di articoli su un singolo argomento, con la sua serie di 50 parti su SQL Server Always On Availability Groups. Sulla base del suo contributo alla comunità SQL Server, è stato riconosciuto con vari premi tra cui il prestigioso “Best author of the year” ininterrottamente nel 2020 e 2021 a SQLShack.,
    Raj è sempre interessato a nuove sfide, quindi se avete bisogno di consulenza aiuto su qualsiasi argomento trattato nei suoi scritti, egli può essere raggiunto a rajendra.gupta16 @ gmail.,com
    Visualizza tutti i messaggi di Rajendra Gupta

    Ultimi messaggi di Rajendra Gupta (vedi tutti)
    • l’Esecuzione di piccoli e grandi aggiornamenti di versione per AWS RDS SQL Server – gennaio 29, 2021
    • la Distribuzione di AWS RDS PostgreSQL istanze – 27 gennaio 2021
    • Migrazione locale di database SQL AWS RDS SQL Server utilizzando AWS DMS – 25 gennaio 2021

    Lascia un commento

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