Поделиться через


ELSE (IF...ELSE) (Transact-SQL)

Накладывает условия на выполнение инструкции Transact-SQL. Инструкция Transact-SQL (sql_statement), согласно аргументу Boolean_expression,выполняется, если значение Boolean_expression равно TRUE. Необязательное ключевое слово ELSE позволяет указать альтернативную инструкцию Transact-SQL, выполняемую в случае, если значение Boolean_expression равно FALSE или NULL.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

IF Boolean_expression { sql_statement | statement_block } 
        [ ELSE { sql_statement | statement_block } ] 

Аргументы

  • Boolean_expression
    Логическое выражение, возвращающее значение TRUE или FALSE. Если в выражении Boolean_expression содержится инструкция SELECT, она должна быть заключена в скобки.

  • { sql_statement | statement_block }
    Любая допустимая инструкция или группа инструкций языка Transact-SQL, определенных блоком инструкций. Чтобы определить блок инструкций (пакет), используются ключевые слова BEGIN и END языка управления выполнением. Хотя все инструкции языка Transact-SQL допустимы в пределах блока BEGIN...END, некоторые из них не следует группировать вместе в пределах одного пакета (блока инструкций).

Типы результата

Boolean

Примеры

А. Использование простого логического выражения

В следующем примере простое логическое выражение (1=1) имеет значение true, поэтому печатается первая инструкция.

IF 1 = 1 PRINT 'Boolean_expression is true.'
ELSE PRINT 'Boolean_expression is false.' ;

В следующем примере простое логическое выражение (1=2) имеет значение false, поэтому печатается вторая инструкция.

IF 1 = 2 PRINT 'Boolean_expression is true.'
ELSE PRINT 'Boolean_expression is false.' ;
GO

Б. Использование запроса как части логического выражения

В следующем примере выполняется запрос как часть логического выражения. В таблице Product имеются данные о 10 велосипедах, которые соответствуют предложению WHERE, поэтому выполняется первый оператор вывода. Измените > 5 на > 15, чтобы посмотреть, как может быть выполнена вторая часть инструкции.

USE AdventureWorks2008R2;
GO
IF 
(SELECT COUNT(*) FROM Production.Product WHERE Name LIKE 'Touring-3000%' ) > 5
PRINT 'There are more than 5 Touring-3000 bicycles.'
ELSE PRINT 'There are 5 or less Touring-3000 bicycles.' ;
GO

В. Использование блока инструкций

В следующем примере запрос выполняется как часть логического выражения, а затем выполняются немного отличающиеся блоки инструкций, основанные на результате логического выражения. Каждый блок инструкций начинается с BEGIN и завершается END.

USE AdventureWorks2008R2;
GO
DECLARE @AvgWeight decimal(8,2), @BikeCount int
IF 
(SELECT COUNT(*) FROM Production.Product WHERE Name LIKE 'Touring-3000%' ) > 5
BEGIN
   SET @BikeCount = 
        (SELECT COUNT(*) 
         FROM Production.Product 
         WHERE Name LIKE 'Touring-3000%');
   SET @AvgWeight = 
        (SELECT AVG(Weight) 
         FROM Production.Product 
         WHERE Name LIKE 'Touring-3000%');
   PRINT 'There are ' + CAST(@BikeCount AS varchar(3)) + ' Touring-3000 bikes.'
   PRINT 'The average weight of the top 5 Touring-3000 bikes is ' + CAST(@AvgWeight AS varchar(8)) + '.';
END
ELSE 
BEGIN
SET @AvgWeight = 
        (SELECT AVG(Weight)
         FROM Production.Product 
         WHERE Name LIKE 'Touring-3000%' );
   PRINT 'Average weight of the Touring-3000 bikes is ' + CAST(@AvgWeight AS varchar(8)) + '.' ;
END ;
GO

Г. Использованием вложенных инструкций IF...ELSE

В следующем примере показано, как вложить одну инструкцию IF … ELSE в другую. Задайте значения переменной @Number равными 5, 50 и 500, чтобы проверить каждую инструкцию.

DECLARE @Number int;
SET @Number = 50;
IF @Number > 100
   PRINT 'The number is large.';
ELSE 
   BEGIN
      IF @Number < 10
      PRINT 'The number is small.';
   ELSE
      PRINT 'The number is medium.';
   END ;
GO