Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Analytics-eindpunt in Microsoft Fabric
Magazijn in Microsoft Fabric
SQL-database in Microsoft Fabric Preview
Legt voorwaarden op voor de uitvoering van een Transact-SQL verklaring. De Transact-SQL-instructie (sql_statement) na de boolean_expression wordt uitgevoerd als de boolean_expression resulteert in TRUE. Het optionele ELSE trefwoord is een alternatieve Transact-SQL instructie die wordt uitgevoerd wanneer boolean_expression evalueert of FALSENULL.
Transact-SQL syntaxis-conventies
Syntax
IF boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
Arguments
boolean_expression
Een expressie die retourneert TRUE of FALSE. Als de boolean_expression een SELECT instructie bevat, moet de SELECT instructie tussen haakjes staan.
{ sql_statement | statement_block }
Elke geldige Transact-SQL instructie of instructiegroepering zoals gedefinieerd met een instructieblok. Als u een instructieblok (batch) wilt definiƫren, gebruikt u de trefwoorden BEGIN voor de controle-of-stroomtaal en END. Hoewel alle Transact-SQL instructies geldig zijn binnen een BEGIN...END blok, mogen bepaalde Transact-SQL instructies niet worden gegroepeerd binnen dezelfde batch (instructieblok).
Return types
Boolean
Examples
De codevoorbeelden in dit artikel gebruiken de AdventureWorks2022 of AdventureWorksDW2022 voorbeelddatabase die u kunt downloaden van de startpagina van Microsoft SQL Server Samples en Community Projects .
A. Een Boole-expressie gebruiken
In het volgende voorbeeld is een Booleaanse expressie (1 = 1) waar en wordt daarom de eerste instructie afgedrukt.
IF 1 = 1 PRINT 'Boolean expression is true.'
ELSE PRINT 'Boolean expression is false.';
In het volgende voorbeeld is een Booleaanse expressie (1 = 2) onwaar en wordt daarom de tweede instructie afgedrukt.
IF 1 = 2 PRINT 'Boolean expression is true.'
ELSE PRINT 'Boolean expression is false.';
GO
B. Een query gebruiken als onderdeel van een Boole-expressie
In het volgende voorbeeld wordt een query uitgevoerd als onderdeel van de Boole-expressie. Omdat er 10 fietsen in de Product tabel staan die voldoen aan de voorwaarde in de WHERE component, wordt de eerste afdrukinstructie uitgevoerd. U kunt dit wijzigen > 5> 15in , om te zien hoe het tweede deel van de instructie kan worden uitgevoerd.
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. Een instructieblok gebruiken
In het volgende voorbeeld wordt een query uitgevoerd als onderdeel van de Boole-expressie en worden vervolgens iets andere instructieblokken uitgevoerd op basis van het resultaat van de Boole-expressie. Elk instructieblok begint met BEGIN en wordt voltooid met 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. Geneste ALS gebruiken... ELSE-instructies
In het volgende voorbeeld ziet u hoe een IF...ELSE instructie in een andere instructie kan worden genest. Stel de @Number variabele in op 5, 50en 500, om elke instructie te testen.
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
Voorbeelden: Azure Synapse Analytics and Analytics Platform System (PDW)
E: Een query gebruiken als onderdeel van een Boole-expressie
In het volgende voorbeeld wordt gebruikt IF...ELSE om te bepalen welke van twee antwoorden de gebruiker moet weergeven, op basis van het gewicht van een item in de DimProduct tabel in de AdventureWorksDW2012 database.
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