Учебники

11) ЕСЛИ… ДАЖЕ Заявление

Зачем вам нужны условные заявления?

В реальной жизни вы выполняете много действий, которые зависят от результата какой-либо другой деятельности или ситуации.

Некоторые примеры в реальном времени:

  • Если завтра пойдет дождь, я планирую поездку.
  • Если авиабилеты из моего города будут стоить менее 400 долларов, то я поеду в отпуск в Европу, иначе я предпочту какое-нибудь туристическое место поблизости.

Здесь вы можете видеть, что одно действие, как вышеупомянутая Поездка, условно зависит от результата другого действия, которое «будет ли это дождь или нет завтра!»

Точно так же MS SQL также предоставляет возможность условного выполнения оператора T-SQL.

В этом уроке вы узнаете:

ЕСЛИ… Остальное утверждение

В MS SQL IF … ELSE является типом условного оператора .

Любой оператор T-SQL может быть выполнен условно, используя IF… ELSE .

Below figure explain IF…ELSE statement

How if and else works
  • If the condition evaluates to True, then T-SQL statements followed by IF keyword will be executed.
  • If the condition evaluates to False, then T-SQL statements followed by ELSE keyword will be executed.
  • Once, either IF T-SQL statements or ELSE T-SQL statement is executed then other unconditional T-SQL statements continues execution.

Syntax and rules

Syntax:

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

Rules:

  • The condition should be Boolean Expression, i.e., condition results in Boolean value when evaluated.
  • IF… ELSE может условно обрабатывать один оператор 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'

Состояние: FLASE

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

Состояние: FLASE

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 = 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

Если заявление с No Else

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

DECLARE @Course_ID INT = 2

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

Он печатает следующее:

Выполнение ложного условия не даст вывода. Рассмотрим следующий запрос

DECLARE @Course_ID INT = 2

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

Результат это

Вложенный IF … Другие заявления

В отличие от других языков программирования, вы не можете добавить оператор ELSE IF в оператор IF… ELSE. Вот почему вы можете вкладывать IF … ELSE заявления. Это продемонстрировано ниже:

 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
  • Также возможно вложение IF… ELSE в другое утверждение IF… ELSE.