SQL Server IF…ELSE Изявление за условие: T-SQL Select Query Пример
Защо имате нужда от условни изрази?
Условните изрази в SQL сървъра ви помагат да дефинирате различни логики и действия за различни условия. Тя ви позволява да извършвате различни действия въз основа на условия, дефинирани в израза. В реалния живот вие извършвате много действия в зависимост от резултата от някаква друга дейност или ситуация.
Някои примери в реално време за SQL case оператор са:
- Ако утре вали, ще планирам пътуване.
- Ако самолетните билети са по-малко от $400 от моя град, тогава ще отида на почивка в Европа, в противен случай ще предпочета някое близко туристическо място.
Тук можете да видите, че едно действие, като пътуването по-горе, е условно зависим върху резултата от друга дейност, която е „дали ще вали или не утре!“
По същия начин, MS SQL също предоставя възможност за изпълнение на T-SQL израз условно.
IF… Инструкция Else в SQL Server
In MS SQL, АКО... ИНАЧЕ е вид Условно твърдение.
Всеки T-SQL оператор може да бъде изпълнен условно с помощта на АКО… ИНАЧЕ.
Фигурата по-долу обяснява IF ELSE в SQL сървъра:

- Ако условието се оценява на Вярно, след това T-SQL изрази, последвани от IF ще бъде изпълнено условие в SQL сървъра.
- Ако условието се оценява на Невярно, след това 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…ELSE с единствената числова стойност в булевия израз.
Условие: ВЯРНО
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. Ако нито едно от тези условия не е вярно, кодът ще отпечата Старши.
Oбобщение
- Променливите са обектът, който действа като контейнер.
- Блокът от изрази трябва да започва с ключова дума BEGIN и да затваря с ключова дума END.
- Else не е задължително да се използва в оператора IF… ELSE
- Влагането на SQL условие IF ELSE в друг оператор IF…ELSE също е възможно.










