Delen via


ELSE (ALS... ELSE) (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-eindpunt in Microsoft FabricMagazijn in Microsoft FabricSQL-database in Microsoft Fabric Preview

Legt voorwaarden op voor de uitvoering van een Transact-SQL verklaring. De Transact-SQL-instructie (sql_statement) na de boolean_expression wordt uitgevoerd als de boolean_expression resulteert in TRUE. Het optionele ELSE trefwoord is een alternatieve Transact-SQL instructie die wordt uitgevoerd wanneer boolean_expression evalueert of FALSENULL.

Transact-SQL syntaxis-conventies

Syntax

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

Arguments

boolean_expression

Een expressie die retourneert TRUE of FALSE. Als de boolean_expression een SELECT instructie bevat, moet de SELECT instructie tussen haakjes staan.

{ sql_statement | statement_block }

Elke geldige Transact-SQL instructie of instructiegroepering zoals gedefinieerd met een instructieblok. Als u een instructieblok (batch) wilt definiƫren, gebruikt u de trefwoorden BEGIN voor de controle-of-stroomtaal en END. Hoewel alle Transact-SQL instructies geldig zijn binnen een BEGIN...END blok, mogen bepaalde Transact-SQL instructies niet worden gegroepeerd binnen dezelfde batch (instructieblok).

Return types

Boolean

Examples

De codevoorbeelden in dit artikel gebruiken de AdventureWorks2022 of AdventureWorksDW2022 voorbeelddatabase die u kunt downloaden van de startpagina van Microsoft SQL Server Samples en Community Projects .

A. Een Boole-expressie gebruiken

In het volgende voorbeeld is een Booleaanse expressie (1 = 1) waar en wordt daarom de eerste instructie afgedrukt.

IF 1 = 1 PRINT 'Boolean expression is true.'
ELSE PRINT 'Boolean expression is false.';

In het volgende voorbeeld is een Booleaanse expressie (1 = 2) onwaar en wordt daarom de tweede instructie afgedrukt.

IF 1 = 2 PRINT 'Boolean expression is true.'
ELSE PRINT 'Boolean expression is false.';
GO

B. Een query gebruiken als onderdeel van een Boole-expressie

In het volgende voorbeeld wordt een query uitgevoerd als onderdeel van de Boole-expressie. Omdat er 10 fietsen in de Product tabel staan die voldoen aan de voorwaarde in de WHERE component, wordt de eerste afdrukinstructie uitgevoerd. U kunt dit wijzigen > 5> 15in , om te zien hoe het tweede deel van de instructie kan worden uitgevoerd.

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. Een instructieblok gebruiken

In het volgende voorbeeld wordt een query uitgevoerd als onderdeel van de Boole-expressie en worden vervolgens iets andere instructieblokken uitgevoerd op basis van het resultaat van de Boole-expressie. Elk instructieblok begint met BEGIN en wordt voltooid met END.

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. Geneste ALS gebruiken... ELSE-instructies

In het volgende voorbeeld ziet u hoe een IF...ELSE instructie in een andere instructie kan worden genest. Stel de @Number variabele in op 5, 50en 500, om elke instructie te 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

Voorbeelden: Azure Synapse Analytics and Analytics Platform System (PDW)

E: Een query gebruiken als onderdeel van een Boole-expressie

In het volgende voorbeeld wordt gebruikt IF...ELSE om te bepalen welke van twee antwoorden de gebruiker moet weergeven, op basis van het gewicht van een item in de DimProduct tabel in de AdventureWorksDW2012 database.

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