ELSE (IF...ELSE) (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL Analytics-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric
Legt Bedingungen für die Ausführung einer Transact-SQL-Anweisung fest. Die Transact-SQL-Anweisung (sql_statement) nach dem boolean_expression wird ausgeführt, wenn die boolean_expression ausgewertet wird TRUE
. Das optionale ELSE
Schlüsselwort ist eine alternative Transact-SQL-Anweisung, die ausgeführt wird, wenn boolean_expression ausgewertet FALSE
wird oder NULL
.
Transact-SQL-Syntaxkonventionen
Syntax
IF boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
Argumente
boolean_expression
Ein Ausdruck, der zurückgibt TRUE
oder FALSE
. Wenn die boolean_expression eine SELECT
Anweisung enthält, muss die SELECT
Anweisung in Klammern eingeschlossen werden.
{ sql_statement | statement_block }
Jede gültige Transact-SQL-Anweisung oder -Anweisung, die mit einem Anweisungsblock definiert ist. Verwenden Sie zum Definieren eines Anweisungsblocks (Batch) die Schlüsselwörter BEGIN
für die Steuerelement-of-Flow-Sprache und END
. Obwohl alle Transact-SQL-Anweisungen innerhalb eines BEGIN...END
Blocks gültig sind, sollten bestimmte Transact-SQL-Anweisungen nicht innerhalb desselben Batches (Anweisungsblock) gruppiert werden.
Rückgabetypen
Boolescher Wert
Beispiele
Die Transact-SQL-Codebeispiele in diesem Artikel verwenden die AdventureWorks2022
- oder AdventureWorksDW2022
-Beispieldatenbank, die Sie von der Homepage Microsoft SQL Server Samples and Community Projects herunterladen können.
A. Verwenden eines booleschen Ausdrucks
Im folgenden Beispiel ist ein boolescher Ausdruck (1 = 1
) vorhanden, der wahr ist und daher die erste Anweisung druckt.
IF 1 = 1 PRINT 'Boolean expression is true.'
ELSE PRINT 'Boolean expression is false.';
Das folgende Beispiel weist einen booleschen Ausdruck (1 = 2
) auf, der "false" ist, und druckt daher die zweite Anweisung.
IF 1 = 2 PRINT 'Boolean expression is true.'
ELSE PRINT 'Boolean expression is false.';
GO
B. Verwenden einer Abfrage als Teil eines booleschen Ausdrucks
Im folgenden Beispiel wird eine Abfrage als Teil des booleschen Ausdrucks ausgeführt. Da in der Product
Tabelle 10 Fahrräder vorhanden sind, die die Bedingung in der WHERE
Klausel erfüllen, wird die erste Print-Anweisung ausgeführt. Sie können zu > 15
, > 5
um zu sehen, wie der zweite Teil der Anweisung ausgeführt werden kann.
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. Verwenden eines Anweisungsblocks
Im folgenden Beispiel wird eine Abfrage als Teil des booleschen Ausdrucks ausgeführt, und anschließend werden auf der Grundlage der Ergebnisse des booleschen Ausdrucks leicht abweichende Anweisungsblöcke ausgeführt. Jeder Anweisungsblock beginnt mit BEGIN
, und er wird mit END
abgeschlossen.
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: Geschachtelte WENN verwenden... ELSE-Anweisungen
Das folgende Beispiel zeigt, wie eine Anweisung in einer IF...ELSE
anderen geschachtelt werden kann. Legen Sie die @Number
Variable auf 5
, 50
und 500
, um jede Anweisung zu 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
Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)
E. Verwenden einer Abfrage als Teil eines booleschen Ausdrucks
Im folgenden Beispiel wird IF...ELSE
ermittelt, welche von zwei Antworten der Benutzer basierend auf der Gewichtung eines Elements in der Tabelle in der DimProduct
AdventureWorksDW2012
Datenbank angezeigt werden soll.
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