Share via


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 wird ausgeführt, wenn die boolean_expression ausgewertet wird TRUE. Die optionale ELSE Schlüsselwort (keyword) ist eine alternative Transact-SQL-Anweisung, die ausgeführt wird, wenn boolean_expression ausgewertet FALSE wird.NULL

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 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 Steuerungs-of-Flow-Sprache Schlüsselwort (keyword)s BEGIN 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-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, 50und 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 DimProductAdventureWorksDW2012 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