This browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Download Microsoft Edge
More info about Internet Explorer and Microsoft Edge
Analytics Platform System (PDW)
SQL Endpoint in Microsoft Fabric
Warehouse in Microsoft Fabric
Imposes conditions on the execution of a Transact-SQL statement. The Transact-SQL statement (
sql_statement
) following the
Boolean_expression
is executed if the
Boolean_expression
evaluates to TRUE. The optional ELSE keyword is an alternate Transact-SQL statement that is executed when
Boolean_expression
evaluates to FALSE or NULL.
Transact-SQL syntax conventions
Syntax
IF Boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.
Arguments
Boolean_expression
Is an expression that returns TRUE or FALSE. If the Boolean_expression contains a SELECT statement, the SELECT statement must be enclosed in parentheses.
{ sql_statement | statement_block }
Is any valid Transact-SQL statement or statement grouping as defined with a statement block. To define a statement block (batch), use the control-of-flow language keywords BEGIN and END. Although all Transact-SQL statements are valid within a BEGIN...END block, certain Transact-SQL statements should not be grouped together within the same batch (statement block).
Result Types
Boolean
Examples
A. Using a simple Boolean expression
The following example has a simple Boolean expression (1=1
) that is true and, therefore, prints the first statement.
IF 1 = 1 PRINT 'Boolean_expression is true.'
ELSE PRINT 'Boolean_expression is false.' ;
The following example has a simple Boolean expression (1=2
) that is false, and therefore prints the second statement.
IF 1 = 2 PRINT 'Boolean_expression is true.'
ELSE PRINT 'Boolean_expression is false.' ;
B. Using a query as part of a Boolean expression
The following example executes a query as part of the Boolean expression. Because there are 10 bikes in the Product
table that meet the WHERE
clause, the first print statement will execute. Change > 5
to > 15
to see how the second part of the statement could execute.
USE AdventureWorks2022;
(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.' ;
C. Using a statement block
The following example executes a query as part of the Boolean expression and then executes slightly different statement blocks based on the result of the Boolean expression. Each statement block starts with BEGIN
and completes with END
.
USE AdventureWorks2022;
DECLARE @AvgWeight DECIMAL(8,2), @BikeCount INT
(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)) + '.';
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 ;
D. Using nested IF...ELSE statements
The following example shows how an IF ... ELSE statement can be nested inside another. Set the @Number
variable to 5
, 50
, and 500
to test each statement.
DECLARE @Number INT;
SET @Number = 50;
IF @Number > 100
PRINT 'The number is large.';
BEGIN
IF @Number < 10
PRINT 'The number is small.';
PRINT 'The number is medium.';
END ;
Examples: Azure Synapse Analytics and Analytics Platform System (PDW)
E: Using a query as part of a Boolean expression
The following example uses IF...ELSE
to determine which of two responses to show the user, based on the weight of an item in the DimProduct
table.
-- 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)
(SELECT @productKey, EnglishDescription, Weight, 'This product is available for shipping or pickup.' FROM DimProduct WHERE ProductKey=@productKey)
See Also
ALTER TRIGGER (Transact-SQL)
Control-of-Flow Language (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
IF...ELSE (Transact-SQL)