Оператор условия SQL Server IF…ELSE: пример запроса выбора T-SQL

Зачем вам нужны условные операторы?

Условные операторы на сервере SQL помогают вам определять различную логику и действия для разных условий. Это позволяет вам выполнять различные действия в зависимости от условий, определенных в операторе. В реальной жизни вы совершаете множество действий, зависящих от результата какой-то другой деятельности или ситуации.

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

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

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

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

Оператор IF… Else в SQL Server

In MS SQL, ЕСЛИ ЕЩЕ является одним из видов Условное заявление.

Любой оператор T-SQL может быть выполнен условно, используя ЕСЛИ ЕЩЕ.

На рисунке ниже поясняется IF ELSE на SQL-сервере:

Как работает if и else
Как работает if и 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 с единственным числовым значением в логическом выражении

Предположение: Предположим, что у вас есть таблица как 'Гуру99' с двумя столбцами и четырьмя строками, как показано ниже:

IF…ELSE с единственным числовым значением в логическом выражении

Мы будем использовать 'Гуру99' таблица в дальнейших примерах

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 с началом и концом

Условие: ВЕРНО

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 с началом и концом

Условие: ЛОЖЬ

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 с началом и концом

Оператор 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

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

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.
  • Else необязательно использовать в инструкции IF… ELSE.
  • Также возможно вложение условия SQL IF ELSE в другой оператор IF…ELSE.