Aracılığıyla paylaş


ELSE (EĞER... ELSE) (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

Transact-SQL deyiminin yürütülmesine koşullar uygular. boolean_expression olarak değerlendirilirse boolean_expression izleyen Transact-SQLdeyimi (TRUE) yürütülür. İsteğe bağlı ELSE anahtar sözcük, boolean_expression veya olarak değerlendirildiğinde FALSE yürütülen alternatif NULL deyimidir.

Transact-SQL söz dizimi kuralları

Syntax

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

Arguments

boolean_expression

veya TRUEdöndüren FALSE bir ifade. boolean_expression bir SELECT deyim içeriyorsa, SELECT deyimi parantez içine alınmalıdır.

{ sql_statement | statement_block }

Deyim bloğuyla tanımlanan geçerli Transact-SQL deyimi veya deyim gruplandırma. Bir deyim bloğu (batch) tanımlamak için akış denetimi dili anahtar sözcüklerini BEGIN ve ENDkullanın. Tüm Transact-SQL deyimleri bir BEGIN...END blok içinde geçerli olsa da, belirli Transact-SQL deyimleri aynı toplu iş (deyim bloğu) içinde birlikte gruplandırılmamalıdır.

Dönüş türleri

Boolean

Examples

Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.

A. Boole ifadesi kullanma

Aşağıdaki örnekte true olan bir Boole ifadesi (1 = 1) vardır ve bu nedenle ilk deyimi yazdırır.

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

Aşağıdaki örnekte false olan bir Boole ifadesi (1 = 2) vardır ve bu nedenle ikinci deyimi yazdırır.

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

B. Boole ifadesinin parçası olarak sorgu kullanma

Aşağıdaki örnek Boole ifadesinin bir parçası olarak bir sorgu yürütür. Tabloda yan tümcesindeki Product koşulu WHERE karşılayan 10 bisiklet olduğundan, ilk print deyimi yürütülür. deyiminin ikinci bölümünün nasıl yürütülebileceğini görmek için olarak değiştirebilirsiniz > 5> 15.

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. Deyim bloğu kullanma

Aşağıdaki örnek Boole ifadesinin bir parçası olarak bir sorgu yürütür ve ardından Boole ifadesinin sonucuna göre biraz farklı deyim blokları yürütür. Her deyim bloğu ile BEGIN başlar ve ile ENDtamamlar.

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. İç içe EĞER kullan... ELSE deyimleri

Aşağıdaki örnekte, bir deyimin başka bir IF...ELSE deyim içinde nasıl iç içe yerleştirilebileceği gösterilmektedir. @Number Her deyimi test etmek için 5değişkenini , 50, ve 500olarak ayarlayın.

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

Örnekler: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW)

E: Boole ifadesinin bir parçası olarak sorgu kullanma

Aşağıdaki örnek, veritabanındaki tablodaki IF...ELSE bir öğenin DimProduct ağırlığına göre kullanıcıyı göstermek için iki yanıtta hangisinin gösterileceğini belirlemek için kullanırAdventureWorksDW2012.

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