Bagikan melalui


LAIN (JIKA ... ELSE) (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistem Platform Analitik (PDW)Titik akhir analitik SQL di Microsoft FabricGudang di Microsoft FabricDatabase SQL di Microsoft Fabric

Memberlakukan kondisi pada eksekusi pernyataan Transact-SQL. Pernyataan Transact-SQL (sql_statement) setelah boolean_expression dijalankan jika boolean_expression mengevaluasi ke TRUE. Kata kunci opsional ELSE adalah pernyataan Transact-SQL alternatif yang dijalankan ketika boolean_expression mengevaluasi ke FALSE atau NULL.

Konvensi sintaks transact-SQL

Syntax

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

Arguments

boolean_expression

Ekspresi yang mengembalikan TRUE atau FALSE. Jika boolean_expression berisi SELECT pernyataan, SELECT pernyataan harus diapit dalam tanda kurung.

{ sql_statement | statement_block }

Setiap pernyataan Transact-SQL atau pengelompokan pernyataan yang valid seperti yang didefinisikan dengan blok pernyataan. Untuk menentukan blok pernyataan (batch), gunakan kata kunci BEGIN bahasa kontrol aliran dan END. Meskipun semua pernyataan Transact-SQL valid dalam blok BEGIN...END , pernyataan Transact-SQL tertentu tidak boleh dikelompokkan bersama dalam batch yang sama (blok pernyataan).

Tipe pengembalian

Boolean

Examples

Sampel kode dalam artikel ini menggunakan database sampel AdventureWorks2025 atau AdventureWorksDW2025, yang dapat Anda unduh dari halaman beranda Sampel dan Proyek Komunitas Microsoft SQL Server.

A. Menggunakan ekspresi Boolean

Contoh berikut memiliki ekspresi Boolean (1 = 1) yang benar dan, oleh karena itu, mencetak pernyataan pertama.

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

Contoh berikut memiliki ekspresi Boolean (1 = 2) yang salah, dan oleh karena itu mencetak pernyataan kedua.

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

B. Menggunakan kueri sebagai bagian dari ekspresi Boolean

Contoh berikut menjalankan kueri sebagai bagian dari ekspresi Boolean. Karena ada 10 sepeda dalam Product tabel yang memenuhi kondisi dalam WHERE klausul, pernyataan cetak pertama dijalankan. Anda dapat mengubah > 5 ke > 15, untuk melihat bagaimana bagian kedua dari pernyataan dapat dijalankan.

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. Menggunakan blok pernyataan

Contoh berikut menjalankan kueri sebagai bagian dari ekspresi Boolean lalu menjalankan blok pernyataan yang sedikit berbeda berdasarkan hasil ekspresi Boolean. Setiap blok pernyataan dimulai dengan BEGIN dan selesai dengan 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. Gunakan IF berlapis... Pernyataan ELSE

Contoh berikut menunjukkan bagaimana IF...ELSE pernyataan dapat disarangkan di dalam pernyataan lain. Atur @Number variabel ke 5, 50, dan 500, untuk menguji setiap pernyataan.

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

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

E: Menggunakan kueri sebagai bagian dari ekspresi Boolean

Contoh berikut menggunakan IF...ELSE untuk menentukan mana dari dua respons yang akan ditampilkan pengguna, berdasarkan berat item dalam DimProduct tabel dalam 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