ELSE (IF...ELSE) (Transact-SQL)

Legt Bedingungen für die Ausführung einer Transact-SQL-Anweisung fest. Die Transact-SQL-Anweisung (sql_statement), die dem Boolean_expression folgt, wird ausgeführt, wenn der Boolean_expression TRUE ergibt. Die alternative Transact-SQL-Anweisung nach dem optionalen ELSE-Schlüsselwort wird ausgeführt, falls Boolean_expression zu FALSE oder NULL ausgewertet wird.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

IF Boolean_expression { sql_statement | statement_block } 
        [ ELSE { sql_statement | statement_block } ] 

Argumente

  • Boolean_expression
    Ein Ausdruck, der TRUE oder FALSE zurückgibt. Wenn der Boolean_expression 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

Boolean

Beispiele

A. Einfache Beispiele

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. Beispiel für die Verwendung einer Abfrage

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 AdventureWorks
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. Beispiel für die Verwendung 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 AdventureWorks
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. Beispiel für geschachtelte IF/ELSE-Anweisungen

Im folgenden Beispiel wird veranschaulicht, wie eine IF ... ELSE-Anweisung in einer anderen IF ... ELSE-Anweisung geschachtelt wird. 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