Istruzione condizionale IF…ELSE di SQL Server: esempio di query Select T-SQL

Perché hai bisogno di dichiarazioni condizionali?

Le istruzioni condizionali nel server SQL aiutano a definire logiche e azioni diverse per condizioni diverse. Consente di eseguire diverse azioni in base alle condizioni definite all'interno della dichiarazione. Nella vita reale, esegui molte azioni in base al risultato di qualche altra attività o situazione.

Alcuni esempi in tempo reale di istruzioni case SQL sono:

  • Se domani piove, pianificherò un viaggio.
  • Se i biglietti aerei costano meno di $ 400 dalla mia città, allora andrò in vacanza in Europa, altrimenti preferirò qualche località turistica vicina.

Qui puoi vedere che un'azione, come Road trip sopra, lo è condizionatamente dipendente sull’esito di un’altra attività che è “se pioverà o no domani!”

Allo stesso modo, MS SQL offre anche la possibilità di eseguire l'istruzione T-SQL in modo condizionale.

Istruzione IF… Else in SQL Server

In MS SQL, SE ALTRO è un tipo di Dichiarazione condizionale.

Qualsiasi istruzione T-SQL può essere eseguita in modo condizionale utilizzando SE ALTRO.

La figura seguente spiega IF ELSE nel server SQL:

Come funziona Se ed Else
Come funziona se e altro
  • Se la condizione corrisponde a Vero, quindi istruzioni T-SQL seguite da IF verrà eseguita la condizione nel server SQL.
  • Se la condizione corrisponde a falso, quindi istruzioni T-SQL seguite da ELSE la parola chiave verrà eseguita.
  • Una volta eseguite le istruzioni IF T-SQL o ELSE T-SQL, l'esecuzione delle altre istruzioni T-SQL incondizionate continua.

IF… Else Sintassi e regole in SQL

Sintassi:

IF <Condition>
     {Statement | Block_of_statement}   
[ ELSE   
     {Statement | Block_of_statement}]

Regole:

  • La condizione dovrebbe essere Espressione booleana, Cioè, la condizione restituisce un valore booleano quando valutata.
  • Istruzione IF ELSE in SQL può gestire in modo condizionale una singola istruzione T-SQL o un blocco di istruzioni T-SQL.
  • Il blocco di istruzioni dovrebbe iniziare con la parola chiave BEGIN e chiudersi con la parola chiave END.
  • L'uso di BEGIN ed END aiuta il server SQL a identificare il blocco di istruzioni che deve essere eseguito e a separarlo dal resto delle istruzioni T-SQL che non fanno parte del blocco IF…ELSE T-SQL.
  • ALTRO è facoltativo.

IF…ELSE con il solo valore numerico nell'espressione booleana.

Condizione: VERO

IF (1=1)
PRINT 'IF STATEMENT: CONDITION IS TRUE'
ELSE
PRINT 'ELSE STATEMENT: CONDITION IS FALSE'

IF…ELSE con il solo valore numerico nell'espressione booleana

Condizione: FALSO

IF (1=2)
PRINT 'IF STATEMENT: CONDITION IS TRUE'
ELSE
PRINT 'ELSE STATEMENT: CONDITION IS FALSE'

IF…ELSE con il solo valore numerico nell'espressione booleana

Assunzione: Supponiamo di avere la tabella as "Guru99" con due colonne e quattro righe come mostrato di seguito:

IF…ELSE con il solo valore numerico nell'espressione booleana

Noi useremo "Guru99" tabella in ulteriori esempi

IF…ELSE con la variabile nell'espressione booleana.

Condizione: VERO

DECLARE @Course_ID INT = 4

IF (@Course_ID = 4)
Select * from Guru99 where Tutorial_ID = 4
ELSE
Select * from Guru99 where Tutorial_ID != 4

IF...ELSE con la variabile nell'espressione booleana

Condizione: FALSO

DECLARE @Course_ID INT = 4

IF (@Course_ID != 4)
Select * from Guru99 where Tutorial_ID = 4
ELSE
Select * from Guru99 where Tutorial_ID != 4

IF...ELSE con la variabile nell'espressione booleana

SE...ALTRIMENTI con Inizio Fine

Condizione: VERO

DECLARE @Course_ID INT = 2

IF (@Course_ID <=2)
	BEGIN
	Select * from Guru99 where Tutorial_ID = 1
	Select * from Guru99 where Tutorial_ID = 2
	END
ELSE
	BEGIN
	Select * from Guru99 where Tutorial_ID = 3
	Select * from Guru99 where Tutorial_ID = 4
	END

SE...ALTRIMENTI con Inizio Fine

Condizione: FALSO

DECLARE @Course_ID INT = 2

IF (@Course_ID >=3)
	BEGIN
	Select * from Guru99 where Tutorial_ID = 1
	Select * from Guru99 where Tutorial_ID = 2
	END
ELSE
	BEGIN
	Select * from Guru99 where Tutorial_ID = 3
	Select * from Guru99 where Tutorial_ID = 4
	END

SE...ALTRIMENTI con Inizio Fine

Dichiarazione IF con No Else

È possibile utilizzare un'istruzione IF in SQL senza una parte ELSE. Ricorda che abbiamo affermato che la parte ELSE è facoltativa. Per esempio:

DECLARE @Course_ID INT = 2

IF (@Course_ID <=2)
	Select * from Guru99 where Tutorial_ID = 1

Stampa quanto segue:

Dichiarazione IF con No Else

L'esecuzione della condizione falsa non darà alcun output. Considera la seguente query

DECLARE @Course_ID INT = 2

IF (@Course_ID <=0)
	Select * from Guru99 where Tutorial_ID = 1

Il risultato è

Dichiarazione IF con No Else

Istruzioni IF…Else nidificate

A differenza di altri linguaggi di programmazione, non è possibile aggiungere un'istruzione ELSE IF all'interno di una condizione IF ELSE in SQL. Questo è il motivo per cui puoi nidificare IF ELSE nelle istruzioni di query SQL. È dimostrato di seguito:

 DECLARE @age INT;
SET @age = 60;

IF @age < 18
   PRINT 'underage';
ELSE
BEGIN
   IF @age < 50
      PRINT 'You are below 50';
   ELSE
      PRINT 'Senior';
END;
  • In questo esempio, il codice stamperà minorenni se il valore di @age è inferiore a 18.
  • In caso contrario, verrà eseguita la parte ELSE. La parte ElSE ha un IF…ELSE nidificato.
  • Se il valore di @age è inferiore a 50, verrà stampato Hai meno di 50 anni. Se nessuna di queste condizioni è vera, il codice stamperà Senior.

Istruzioni IF…Else nidificate

Sintesi

  • Le variabili sono l'oggetto che funge da segnaposto.
  • Il blocco di istruzioni dovrebbe iniziare con la parola chiave BEGIN e chiudersi con la parola chiave END.
  • Else è facoltativo da utilizzare nell'istruzione IF… ELSE
  • È anche possibile nidificare la condizione SQL IF ELSE in un'altra istruzione IF…ELSE.