Udostępnij za pomocą


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

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punkt końcowy analizy SQL w usłudze Microsoft FabricHurtownia danych w usłudze Microsoft FabricBaza danych SQL w usłudze Microsoft Fabric

Nakłada warunki na wykonanie instrukcji Transact-SQL. Instrukcja Transact-SQL (sql_statement) po boolean_expression jest wykonywana, jeśli boolean_expression zwróci wartość TRUE. Opcjonalne ELSE słowo kluczowe to alternatywna instrukcja Transact-SQL wykonywana, gdy boolean_expression daje wartość FALSE lub NULL.

Transact-SQL konwencje składni

Syntax

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

Arguments

boolean_expression

Wyrażenie zwracające TRUE wartość lub FALSE. Jeśli boolean_expression zawiera instrukcję SELECT , SELECT instrukcja musi być ujęta w nawiasy.

{ sql_statement | statement_block }

Każda prawidłowa instrukcja Transact-SQL lub grupowanie instrukcji zgodnie z definicją z blokiem instrukcji. Aby zdefiniować blok instrukcji (batch), użyj słów kluczowych BEGIN języka sterowania przepływu i END. Mimo że wszystkie instrukcje Transact-SQL są prawidłowe w obrębie BEGIN...END bloku, niektóre instrukcje Transact-SQL nie powinny być grupowane razem w ramach tej samej partii (bloku instrukcji).

Typy zwracane

Boolean

Examples

Przykłady kodu w tym artykule korzystają z przykładowej bazy danych AdventureWorks2025 lub AdventureWorksDW2025, którą można pobrać ze strony głównej Przykładów programu Microsoft SQL Server i projektów społeczności.

A. Używanie wyrażenia warunkowego

Poniższy przykład zawiera wyrażenie logiczne (1 = 1), które jest prawdziwe, a zatem wyświetla pierwszą instrukcję.

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

Poniższy przykład zawiera wyrażenie logiczne (1 = 2), które jest fałszywe, a w związku z tym wyświetla drugą instrukcję.

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

B. Używanie zapytania jako części wyrażenia logicznego

Poniższy przykład wykonuje zapytanie w ramach wyrażenia logicznego. Ponieważ w Product tabeli znajduje się 10 rowerów spełniających warunek w klauzuli WHERE , wykonywana jest pierwsza instrukcja drukowania. Możesz zmienić > 5 wartość na > 15, aby zobaczyć, jak może zostać wykonana druga część instrukcji.

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. Używanie bloku instrukcji

Poniższy przykład wykonuje zapytanie w ramach wyrażenia logicznego, a następnie wykonuje nieco inne bloki instrukcji na podstawie wyniku wyrażenia logicznego. Każdy blok instrukcji rozpoczyna się od i kończy się BEGIN ciągiem 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. Użyj zagnieżdżonego if... Instrukcje ELSE

W poniższym przykładzie pokazano, jak można zagnieżdżać instrukcję IF...ELSE wewnątrz innej. Ustaw zmienną @Number na 5, 50i 500, aby przetestować każdą instrukcję.

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

Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)

E: Używanie zapytania jako części wyrażenia logicznego

W poniższym przykładzie użyto IF...ELSE metody do określenia, które z dwóch odpowiedzi mają być wyświetlane użytkownikowi na podstawie wagi elementu w DimProduct tabeli w AdventureWorksDW2012 bazie danych.

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