ELSE (IF...ELSE) (Transact-SQL)
Применимо к: SQL Server Azure SQL Database
Управляемый экземпляр SQL Azure
Azure Synapse Analytics Analytics
Platform System (PDW)
Конечная точка SQL в хранилище Microsoft Fabric
в Microsoft Fabric
Задает условия выполнения для инструкции 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 } ]
Примечание
Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.
Аргументы
Boolean_expression
Выражение, возвращающее значение TRUE или FALSE. Если логическое выражение Boolean_expression содержит инструкцию SELECT, инструкция SELECT должна быть заключена в скобки.
{ sql_statement | statement_block }
Это любая допустимая инструкция или группа инструкций Transact-SQL, которые определены в блоке инструкций. Чтобы определить блок инструкций (пакет), используются ключевые слова BEGIN и END языка управления выполнением. Хотя в пределах блока BEGIN...END допускаются любые инструкции Transact-SQL, некоторые инструкции Transact-SQL не следует группировать в пределах одного пакета (блока операторов).
Типы результата
Boolean
Примеры
A. Использование простого логического выражения
В следующем примере простое логическое выражение (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 AdventureWorks2022;
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 AdventureWorks2022;
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
Примеры: Azure Synapse Analytics и Система платформы аналитики (PDW)
Д. Использование запроса как части логического выражения
В следующем примере используется IF...ELSE
для определения того, какой из двух ответов показать пользователю, на основе веса элемента в таблице DimProduct
.
-- Uses AdventureWorks
DECLARE @maxWeight FLOAT, @productKey INTEGER
SET @maxWeight = 100.00
SET @productKey = 424
IF @maxWeight <= (SELECT Weight FROM DimProduct WHERE ProductKey=@productKey)
(SELECT @productKey, EnglishDescription, Weight, 'This product is too heavy to ship and is only available for pickup.' FROM DimProduct WHERE ProductKey=@productKey)
ELSE
(SELECT @productKey, EnglishDescription, Weight, 'This product is available for shipping or pickup.' FROM DimProduct WHERE ProductKey=@productKey)
См. также:
ALTER TRIGGER (Transact-SQL)
Язык управления потоком (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
IF...ELSE (Transact-SQL)