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 сървъра:

Как работи If and Else
Как работи if and else
  • Ако условието се оценява на Вярно, след това 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…ELSE с единствената числова стойност в булевия израз

Състояние: НЕВЯРНО

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

IF…ELSE с единствената числова стойност в булевия израз

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

IF…ELSE с единствената числова стойност в булевия израз

Ще използваме "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

Oбобщение

  • Променливите са обектът, който действа като контейнер.
  • Блокът от изрази трябва да започва с ключова дума BEGIN и да затваря с ключова дума END.
  • Else не е задължително да се използва в оператора IF… ELSE
  • Влагането на SQL условие IF ELSE в друг оператор IF…ELSE също е възможно.

Обобщете тази публикация с: