Di SQL Server, IIF()
fungsi (jangan bingung dengan IF
pernyataan) adalah fungsi bersyarat yang menampilkan argumen kedua atau ketiga berdasarkan evaluasi argumen pertama.
Ini adalah cara singkat untuk menulis CASE
ekspresi. Ini secara logis setara dengan CASE WHEN X THEN Y ELSE Z END
dengan asumsi IIF(X, Y, Z)
.
IIF()
adalah singkatan dari JIKA Segera .
Sintaks
Sintaksnya seperti ini:
IIF ( boolean_expression, true_value, false_value )
Dimana:
- boolean_expression adalah ekspresi yang akan dievaluasi.
- nilai_sebenarnya dikembalikan jika boolean_expression benar.
- nilai_palsu dikembalikan jika boolean_expression salah atau tidak diketahui.
Seperti halnya CASE
ekspresi, IIF()
pernyataan hanya dapat disarangkan hingga level maksimum 10.
Contoh
Berikut adalah contoh dasar untuk menunjukkan bagaimana IIF()
bekerja.
SELECT IIF( 1 < 2, 'True', 'False' );
Hasil:
True
Dalam hal ini, ekspresi yang akan dievaluasi adalah 1 < 2
. Benar bahwa 1 kurang dari 2 sehingga argumen kedua dikembalikan.
Ini setara dengan melakukan hal berikut.
SELECT
CASE WHEN 1 < 2 THEN 'True'
ELSE 'False'
END;
Hasil:
True
Dalam contoh ini saya menggunakan kata “Benar” dan “Salah” tetapi saya bisa menggunakan apa saja.
Misalnya, saya bisa melakukan ini sebagai gantinya:
SELECT IIF( 1 < 2, 'Fail', 'Pass' );
Hasil:
Fail
Atau itu bisa menjadi sesuatu yang sepenuhnya dihapus dari jawaban tipe biner "benar" atau "salah".
Misalnya:
SELECT IIF( 1 < 2, 'Deadlift', 'Bench Press' );
Hasil:
Deadlift
Menguji Variabel
Dalam praktiknya, Anda biasanya menguji variabel, kolom, dll daripada konstanta seperti pada contoh sebelumnya.
Berikut adalah contoh yang menguji sebuah variabel.
DECLARE @bankBalance int = 123;
SELECT IIF(@bankBalance > 100, 'Rich!', 'Poor');
Hasil:
Rich!
Contoh Basis Data
Berikut adalah contoh yang menggunakan kolom dari database.
SELECT TOP(10)
Name,
Population,
IIF(
Population > 400000,
'Big City',
'Small City'
) AS 'Big/Small'
FROM city;
Hasil:
+----------------+--------------+-------------+ | Name | Population | Big/Small | |----------------+--------------+-------------| | Kabul | 1780000 | Big City | | Qandahar | 237500 | Small City | | Herat | 186800 | Small City | | Mazar-e-Sharif | 127800 | Small City | | Amsterdam | 731200 | Big City | | Rotterdam | 593321 | Big City | | Haag | 440900 | Big City | | Utrecht | 234323 | Small City | | Eindhoven | 201843 | Small City | | Tilburg | 193238 | Small City | +----------------+--------------+-------------+
Fungsi IIF() Bersarang
Berikut ini contoh penyarangan IIF()
fungsi. Dengan "bersarang" yang saya maksud adalah saya melewati IIF()
lain berfungsi sebagai argumen ke bagian luar IIF()
fungsi.
DECLARE @bankBalance int = 123;
SELECT IIF(
@bankBalance > 100,
IIF(@bankBalance > 150, 'Rich!', 'Wealthy'),
'Poor'
);
Hasil:
Wealthy
Anda dapat membuat sarang IIF()
berfungsi hingga level 10.