Інструкція умови SQL Server IF…ELSE: приклад запиту T-SQL Select

Навіщо вам потрібні умовні оператори?

Умовні оператори на сервері SQL допомагають визначати різні логіки та дії для різних умов. Це дозволяє виконувати різні дії на основі умов, визначених у операторі. У реальному житті ви виконуєте багато дій залежно від результату іншої діяльності чи ситуації.

Нижче наведено кілька прикладів оператора case у реальному часі SQL:

  • Якщо завтра піде дощ, я планую поїздку.
  • Якщо авіаквитки з мого міста коштують менше 400 доларів, то я поїду у відпустку в Європу, інакше я віддаю перевагу якомусь туристичному місту поблизу.

Тут ви можете побачити одну дію, як-от подорож вище умовно залежні на результат іншої діяльності, тобто «буде завтра дощ чи ні!»

Подібним чином MS SQL також надає можливість умовно виконувати оператор T-SQL.

IF… Інструкція Else в SQL Server

In MS SQL, ЯКЩО...ІНШЕ є одним з видів Умовне висловлювання.

Будь-який оператор T-SQL можна виконати умовно за допомогою ЯКЩО... ІНШЕ.

На малюнку нижче пояснюється IF ELSE на сервері SQL:

Як працює If and Else
Як працює if and else
  • Якщо умова оцінюється як Правда, потім оператори T-SQL, а потім IF умова на сервері SQL буде виконано.
  • Якщо умова оцінюється як False, потім оператори T-SQL, а потім ELSE ключове слово буде виконано.
  • Після виконання оператора IF T-SQL або оператора ELSE T-SQL виконання інших безумовних операторів T-SQL продовжується.

IF… Else Синтаксис і правила в SQL

Синтаксис:

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

Правила:

  • Умова повинна бути Логічний вираз, Тобто умова призводить до логічного значення під час оцінки.
  • Інструкція IF ELSE в SQL може умовно обробляти один оператор T-SQL або блок операторів T-SQL.
  • Блок оператора повинен починатися з ключового слова BEGIN і закінчуватися ключовим словом END.
  • Використання BEGIN і END допомагає SQL-серверу визначити блок операторів, який потрібно виконати, і відокремити його від решти операторів T-SQL, які не є частиною блоку IF…ELSE T-SQL.
  • ELSE необов’язковий.

IF…ILSE з єдиним числовим значенням у логічному виразі.

Умова: ІСТИНА

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

IF…ILSE з єдиним числовим значенням у логічному виразі

Умова: НЕПРАВДА

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

IF…ILSE з єдиним числовим значенням у логічному виразі

Припущення: Припустимо, що у вас є таблиця як "Guru99" з двома стовпцями та чотирма рядками, як показано нижче:

IF…ILSE з єдиним числовим значенням у логічному виразі

Ми будемо використовувати "Guru99" у наступних прикладах

IF…ELSE зі змінною в логічному виразі.

Умова: ІСТИНА

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 зі змінною в логічному виразі

Умова: НЕПРАВДА

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 зі змінною в логічному виразі

IF...ELSE з Begin End

Умова: ІСТИНА

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

IF...ELSE з Begin End

Умова: НЕПРАВДА

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

IF...ELSE з Begin End

Оператор IF з No Else

Ви можете використовувати оператор IF у SQL без частини ELSE. Пам’ятайте, що ми зазначали, що частина ELSE необов’язкова. Наприклад:

DECLARE @Course_ID INT = 2

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

Він друкує наступне:

Оператор IF з No Else

Виконання умови false не дасть вихідних даних. Розглянемо наступний запит

DECLARE @Course_ID INT = 2

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

Результат це

Оператор IF з No Else

Вкладені оператори IF…Else

На відміну від інших мови програмування, ви не можете додати оператор ELSE IF до умови IF ELSE у SQL. Ось чому ви можете вкладати IF ELSE в оператори запиту SQL. Це показано нижче:

 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;
  • У цьому прикладі код виведе неповнолітній, якщо значення @age менше 18 років.
  • Якщо ні, буде виконано частину ELSE. Частина ElSE має вкладений IF…ELSE.
  • Якщо значення @age менше 50, буде надруковано «Вам менше 50». Якщо жодна з цих умов не виконується, код надрукує «Старший».

Вкладені оператори IF…Else

Підсумки

  • Змінні — це об’єкт, який діє як заповнювач.
  • Блок оператора повинен починатися з ключового слова BEGIN і закінчуватися ключовим словом END.
  • Інакше не є обов’язковим для використання в операторі IF… ELSE
  • Також можливо вкладення умови SQL IF ELSE в інший оператор IF…ELSE.