Оператор условия 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-сервере:
- Если условие оценивается как Правда, затем инструкции 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'
Предположение: Предположим, что у вас есть таблица как 'Гуру99' с двумя столбцами и четырьмя строками, как показано ниже:
Мы будем использовать 'Гуру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
Условие: ЛОЖЬ
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 = 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
Он печатает следующее:
Выполнение ложного условия не даст никакого результата. Рассмотрим следующий запрос
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.
- Else необязательно использовать в инструкции IF… ELSE.
- Также возможно вложение условия SQL IF ELSE в другой оператор IF…ELSE.