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