SQL Server IF…ELSE Warunek: Przykład zapytania T-SQL

Dlaczego potrzebujesz instrukcji warunkowych?

Instrukcje warunkowe w serwerze SQL pomagają zdefiniować różne logiki i działania dla różnych warunków. Umożliwia wykonanie różnych działań w oparciu o warunki zdefiniowane w wyciągu. W prawdziwym życiu wykonujesz wiele działań zależnych od wyniku innej czynności lub sytuacji.

Oto kilka przykładów instrukcji case SQL w czasie rzeczywistym:

  • Jeśli jutro będzie padać, zaplanuję wycieczkę.
  • Jeśli bilety lotnicze z mojego miasta będą tańsze niż 400 dolarów, pojadę na wakacje do Europy, w przeciwnym razie wolę jakieś pobliskie miejsce turystyczne.

Tutaj widać, że jedna akcja, taka jak podróż powyższa, to warunkowo zależny na wyniku innego działania, jakim jest pytanie: „czy jutro będzie padać deszcz, czy nie!”

Podobnie MS SQL zapewnia również możliwość warunkowego wykonywania instrukcji T-SQL.

IF… Else instrukcja w SQL Server

In MS SQL, JEŚLI INACZEJ to rodzaj Instrukcja warunkowa.

Dowolną instrukcję T-SQL można wykonać warunkowo za pomocą JEŚLI INACZEJ.

Poniższy rysunek wyjaśnia IF ELSE na serwerze SQL:

Jak działa funkcja If i Else
Jak działa if i else
  • Jeśli warunek ma wartość Prawdziwe, następnie instrukcje T-SQL, po których następuje IF warunek w serwerze SQL zostanie wykonany.
  • Jeśli warunek ma wartość Fałszywy, następnie instrukcje T-SQL, po których następuje ELSE słowo kluczowe zostanie wykonane.
  • Po wykonaniu instrukcji IF T-SQL lub ELSE T-SQL, wówczas wykonywanie innych bezwarunkowych instrukcji T-SQL jest kontynuowane.

IF… Else Składnia i reguły w SQL

Składnia:

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

zasady:

  • Warunek powinien być Wyrażenie logiczne, czyli warunek po ocenie daje wartość logiczną.
  • JEŚLI W przeciwnym razie instrukcja w SQL może warunkowo obsłużyć pojedynczą instrukcję T-SQL lub blok instrukcji T-SQL.
  • Blok instrukcji powinien zaczynać się od słowa kluczowego BEGIN i kończyć słowem kluczowym END.
  • Użycie BEGIN i END pomaga serwerowi SQL zidentyfikować blok instrukcji, który należy wykonać i oddzielić go od pozostałych instrukcji T-SQL, które nie są częścią bloku IF…ELSE T-SQL.
  • ELSE jest opcjonalne.

IF…ELSE z jedyną wartością liczbową w wyrażeniu boolowskim.

Warunek: PRAWDA

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

IF…ELSE z jedyną wartością liczbową w wyrażeniu boolowskim

Warunek: FAŁSZ

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

IF…ELSE z jedyną wartością liczbową w wyrażeniu boolowskim

Założenie: Załóżmy, że masz tabelę jako „Guru99” z dwiema kolumnami i czterema wierszami, jak pokazano poniżej:

IF…ELSE z jedyną wartością liczbową w wyrażeniu boolowskim

Użyjemy „Guru99” tabeli w dalszych przykładach

IF…ELSE ze zmienną w wyrażeniu boolowskim.

Warunek: PRAWDA

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 ze zmienną w wyrażeniu boolowskim

Warunek: FAŁSZ

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 ze zmienną w wyrażeniu boolowskim

JEŻELI…ELSE z początkiem końca

Warunek: PRAWDA

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

JEŻELI...ELSE z początkiem końca

Warunek: FAŁSZ

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

JEŻELI...ELSE z początkiem końca

Instrukcja IF z No Else

Możesz użyć instrukcji IF w SQL bez części ELSE. Pamiętaj, że stwierdziliśmy, że część ELSE jest opcjonalna. Na przykład:

DECLARE @Course_ID INT = 2

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

Wyświetla się następujący komunikat:

Instrukcja IF z No Else

Wykonanie warunku false nie da żadnego wyniku. Rozważmy następujące zapytanie

DECLARE @Course_ID INT = 2

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

Wynik to

Instrukcja IF z No Else

Zagnieżdżone instrukcje IF…Else

W przeciwieństwie do innych języki programowania, nie można dodać instrukcji ELSE IF w warunku IF ELSE w języku SQL. Właśnie dlatego możesz zagnieżdżać IF ELSE w instrukcjach zapytań SQL. Pokazano to poniżej:

 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;
  • W tym przykładzie kod wyświetli osobę niepełnoletnią, jeśli wartość @age będzie mniejsza niż 18.
  • Jeśli nie, zostanie wykonana część ELSE. Część ElSE zawiera zagnieżdżoną opcję IF…ELSE.
  • Jeśli wartość @age jest niższa niż 50, zostanie wyświetlony komunikat Jesteś poniżej 50 lat. Jeśli żaden z tych warunków nie jest spełniony, kod wyświetli Senior.

Zagnieżdżone instrukcje IF…Else

Podsumowanie

  • Zmienne są obiektem, który pełni rolę symbolu zastępczego.
  • Blok instrukcji powinien zaczynać się od słowa kluczowego BEGIN i kończyć słowem kluczowym END.
  • Użycie opcji Else w instrukcji IF… ELSE jest opcjonalne
  • Możliwe jest także zagnieżdżenie warunku SQL IF ELSE w innej instrukcji IF…ELSE.