Bagikan melalui


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

Berlaku untuk: Titik akhir analitik SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Platform System (PDW) SQL di Microsoft Fabric Warehouse 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

Sintaks

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

Argumen

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).

Jenis yang dikembalikan

Boolean

Contoh

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

J. 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