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)