Інструкція умови 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:
- Якщо умова оцінюється як Правда, потім оператори 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 (1=2) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
Припущення: Припустимо, що у вас є таблиця як "Guru99" з двома стовпцями та чотирма рядками, як показано нижче:
Ми будемо використовувати "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
Умова: НЕПРАВДА
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 з 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
Умова: НЕПРАВДА
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 з No Else
Ви можете використовувати оператор IF у SQL без частини ELSE. Пам’ятайте, що ми зазначали, що частина ELSE необов’язкова. Наприклад:
DECLARE @Course_ID INT = 2 IF (@Course_ID <=2) Select * from Guru99 where Tutorial_ID = 1
Він друкує наступне:
Виконання умови false не дасть вихідних даних. Розглянемо наступний запит
DECLARE @Course_ID INT = 2 IF (@Course_ID <=0) Select * from Guru99 where Tutorial_ID = 1
Результат це
Вкладені оператори 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». Якщо жодна з цих умов не виконується, код надрукує «Старший».
Підсумки
- Змінні — це об’єкт, який діє як заповнювач.
- Блок оператора повинен починатися з ключового слова BEGIN і закінчуватися ключовим словом END.
- Інакше не є обов’язковим для використання в операторі IF… ELSE
- Також можливо вкладення умови SQL IF ELSE в інший оператор IF…ELSE.