Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure Synapse Analytics
Система платформы аналитики (PDW)
Конечная точка SQL аналитики в Microsoft Fabric
Хранилище в Microsoft Fabric
База данных SQL в Microsoft Fabric
Задает условия выполнения для инструкции Transact-SQL. Инструкция Transact-SQL (sql_statement) после boolean_expression выполняется, если boolean_expression оценивается TRUE. Необязательное ELSE ключевое слово — это альтернативная инструкция Transact-SQL, которая выполняется при boolean_expression вычисления FALSE или NULL.
Соглашения о синтаксисе Transact-SQL
Syntax
IF boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
Arguments
boolean_expression
Выражение, возвращающее TRUE или FALSE.
Если boolean_expression содержит инструкциюSELECT, SELECT оператор должен быть заключен в скобки.
{ sql_statement | statement_block }
Любая допустимая инструкция Transact-SQL или группирование инструкций, как определено с блоком инструкций. Чтобы определить блок инструкций (пакет), используйте ключевые слова BEGIN языка управления потоком и END. Хотя все инструкции Transact-SQL допустимы в блоке BEGIN...END , некоторые инструкции Transact-SQL не должны группироваться в одном пакете (блок инструкций).
Типы возвращаемых данных
Boolean
Examples
Примеры кода в этой статье используют базу данных образца AdventureWorks2025 или AdventureWorksDW2025, которую можно скачать с домашней страницы образцов и проектов сообщества Microsoft SQL Server и.
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
B. Использование запроса в рамках логического выражения
В следующем примере выполняется запрос как часть логического выражения. Так как в 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
C. Использование блока инструкций
В следующем примере запрос выполняется как часть логического выражения, а затем выполняются немного отличающиеся блоки инструкций, основанные на результате логического выражения. Каждый блок инструкций начинается с 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
D. Используйте вложенный IF... Инструкции ELSE
В следующем примере показано, как IF...ELSE оператор может быть вложен в другой. Задайте для переменной значение , и @Numberдля проверки каждой 5 инструкции. 50500
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 , какие из двух ответов отображаются пользователем на основе веса элемента в таблице в DimProductAdventureWorksDW2012 базе данных.
DECLARE @maxWeight FLOAT, @productKey INT;
SET @maxWeight = 100.00;
SET @productKey = 424;
IF @maxWeight <= (
SELECT [Weight]
FROM DimProduct
WHERE ProductKey = @productKey;
)
BEGIN
SELECT @productKey,
EnglishDescription,
[Weight],
'This product is too heavy to ship and is only available for pickup.'
FROM DimProduct
WHERE ProductKey = @productKey;
END
ELSE
BEGIN
SELECT @productKey,
EnglishDescription,
[Weight],
'This product is available for shipping or pickup.'
FROM DimProduct
WHERE ProductKey = @productKey;
END