Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analysplattformssystem (PDW)
SQL-analysslutpunkt i Microsoft Fabric
Lager i Microsoft Fabric
SQL-databas i Förhandsversion av Microsoft Fabric
Inför villkor för körning av en Transact-SQL-instruktion. Transact-SQL-instruktionen (sql_statement) efter boolean_expression körs om boolean_expression utvärderas till TRUE. Det valfria ELSE nyckelordet är en alternativ Transact-SQL-instruktion som körs när boolean_expression utvärderas till FALSE eller NULL.
Transact-SQL syntaxkonventioner
Syntax
IF boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
Arguments
boolean_expression
Ett uttryck som returnerar TRUE eller FALSE. Om boolean_expression innehåller en SELECT -instruktion måste -instruktionen SELECT omges av parenteser.
{ sql_statement | statement_block }
Alla giltiga Transact-SQL-instruktion eller -instruktionsgruppering enligt definitionen med ett instruktionsblock. Om du vill definiera ett instruktionsblock (batch) använder du nyckelorden BEGIN control-of-flow-språk och END. Även om alla Transact-SQL-instruktioner är giltiga inom ett BEGIN...END block bör vissa Transact-SQL-instruktioner inte grupperas tillsammans inom samma batch (instruktionsblock).
Return types
Boolean
Examples
Kodexemplen i den här artikeln använder AdventureWorks2022- eller AdventureWorksDW2022-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.
A. Använda ett booleskt uttryck
I följande exempel finns ett booleskt uttryck (1 = 1) som är sant och därför skriver ut den första instruktionen.
IF 1 = 1 PRINT 'Boolean expression is true.'
ELSE PRINT 'Boolean expression is false.';
I följande exempel finns ett booleskt uttryck (1 = 2) som är falskt och skriver därför ut den andra instruktionen.
IF 1 = 2 PRINT 'Boolean expression is true.'
ELSE PRINT 'Boolean expression is false.';
GO
B. Använda en fråga som en del av ett booleskt uttryck
I följande exempel körs en fråga som en del av det booleska uttrycket. Eftersom det finns 10 cyklar i Product tabellen som uppfyller villkoret WHERE i -satsen körs den första utskriftsinstruktionen. Du kan ändra > 5 till > 15för att se hur den andra delen av -instruktionen kan köras.
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. Använda ett instruktionsblock
I följande exempel körs en fråga som en del av det booleska uttrycket och kör sedan något olika instruktionsblock baserat på resultatet av det booleska uttrycket. Varje instruktionsblock börjar med BEGIN och slutförs med 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. Använd kapslad IF... ELSE-instruktioner
I följande exempel visas hur en IF...ELSE instruktion kan kapslas i en annan. Ange variabeln @Number till 5, 50och 500, för att testa varje instruktion.
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
Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)
E: Använda en fråga som en del av ett booleskt uttryck
I följande exempel används IF...ELSE för att avgöra vilket av två svar som ska visas för användaren, baserat på vikten för ett objekt i DimProduct tabellen i AdventureWorksDW2012 databasen.
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