ELSE (IF...ELSE) (Transact-SQL)
Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-Endpunkt in Microsoft FabricWarehouse 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-Objekt wird ausgeführt, wenn das Boolean_expression-Objekt als TRUE ausgewertet wird. Die alternative Transact-SQL-Anweisung nach dem optionalen ELSE-Schlüsselwort wird ausgeführt, falls Boolean_expression als FALSE oder NULL ausgewertet wird.
Transact-SQL-Syntaxkonventionen
Syntax
IF Boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
Hinweis
Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.
Argumente
Boolean_expression
Ein Ausdruck, der TRUE oder FALSE zurückgibt. Wenn das Boolean_expression-Objekt eine SELECT-Anweisung enthält, muss die SELECT-Anweisung in Klammern eingeschlossen werden.
{ sql_statement | statement_block }
Eine beliebige gültige Transact-SQL-Anweisung oder -Anweisungsgruppierung, die als Anweisungsblock definiert ist. Um einen Anweisungsblock (Batch) zu definieren, verwenden Sie die Schlüsselwörter BEGIN und END aus den Sprachkonstrukten zur Ablaufsteuerung. Obwohl sämtliche Transact-SQL-Anweisungen in einem BEGIN...END-Block gültig sind, sollten bestimmte Transact-SQL-Anweisungen nicht in demselben Batch (Anweisungsblock) gruppiert werden.
Ergebnistypen
Boolescher Wert
Beispiele
A. Verwenden eines einfachen booleschen Ausdrucks
Das folgende Beispiel enthält einen einfachen booleschen Ausdruck (1=1
), der TRUE ist, und daher wird die erste Anweisung ausgegeben.
IF 1 = 1 PRINT 'Boolean_expression is true.'
ELSE PRINT 'Boolean_expression is false.' ;
Das folgende Beispiel enthält einen einfachen booleschen Ausdruck (1=2
), der FALSE ist, und daher wird die zweite Anweisung ausgegeben.
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 der WHERE
-Klausel entsprechen, wird die erste Print-Anweisung ausgeführt. Ändern Sie > 5
in > 15
, um die mögliche Ausführung des zweiten Teils der Anweisung anzuzeigen.
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: Verwenden geschachtelter IF...ELSE-Anweisungen
Im folgenden Beispiel wird gezeigt, wie eine IF … ELSE-Anweisung in einer anderen geschachtelt werden kann. Legen Sie die @Number
-Variable auf 5
, 50
und 500
fest, um die einzelnen Anweisungen 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
verwendet, um basierend auf der Gewichtung eines Elements in der DimProduct
-Tabelle festzulegen, welche Antwort von zwei Antworten dem Benutzer angezeigt wird.
-- 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)
ELSE
(SELECT @productKey, EnglishDescription, Weight, 'This product is available for shipping or pickup.' FROM DimProduct WHERE ProductKey=@productKey)
Weitere Informationen
ALTER TRIGGER (Transact-SQL)
Ablaufsteuerungssprache (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
IF...ELSE (Transact-SQL)
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für