Fungsi Logis - IIF (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Mengembalikan salah satu dari dua nilai, tergantung pada apakah ekspresi Boolean mengevaluasi ke true atau false di SQL Server.

Konvensi sintaks transact-SQL

Sintaksis

IIF( boolean_expression, true_value, false_value )

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

boolean_expression

Ekspresi Boolean yang valid.

Jika argumen ini bukan ekspresi boolean, maka kesalahan sintaks dimunculkan.

true_value

Nilai yang akan dikembalikan jika boolean_expression mengevaluasi ke true.

false_value

Nilai yang akan dikembalikan jika boolean_expression mengevaluasi ke false.

Jenis Kembalian

Mengembalikan jenis data dengan prioritas tertinggi dari jenis dalam true_value dan false_value. Untuk informasi selengkapnya, lihat Prioritas Tipe Data (Transact-SQL).

Keterangan

IIF adalah cara singkat untuk menulis ekspresi CASE. Ini mengevaluasi ekspresi Boolean yang diteruskan sebagai argumen pertama, lalu mengembalikan salah satu dari dua argumen lainnya berdasarkan hasil evaluasi. Artinya, true_value dikembalikan jika ekspresi Boolean benar, dan false_value dikembalikan jika ekspresi Boolean salah atau tidak diketahui. true_value dan false_value dapat memiliki jenis apa pun. Aturan yang sama yang berlaku untuk ekspresi CASE untuk ekspresi Boolean, penanganan null, dan jenis pengembalian juga berlaku untuk IIF. Untuk informasi selengkapnya, lihat CASE (Transact-SQL).

Fakta bahwa IIF diterjemahkan ke dalam CASE juga berdampak pada aspek lain dari perilaku fungsi ini. Karena ekspresi CASE hanya dapat ditumpuk hingga tingkat 10, pernyataan IIF juga dapat ditumpuk hanya hingga tingkat maksimum 10. Selain itu, IIF di-remote ke server lain sebagai ekspresi CASE yang setara secara semantik, dengan semua perilaku ekspresi CASE jarak jauh.

IIF tidak didukung di kumpulan SQL khusus di Azure Synapse Analytics.

Contoh

J. Contoh IIF sederhana

DECLARE @a INT = 45, @b INT = 40;
SELECT [Result] = IIF( @a > @b, 'TRUE', 'FALSE' );

Berikut adalah hasil yang ditetapkan.

Result  
--------  
TRUE  

B. IIF dengan konstanta NULL

SELECT [Result] = IIF( 45 > 30, NULL, NULL );

Hasil dari pernyataan ini adalah kesalahan.

C. IIF dengan parameter NULL

DECLARE @P INT = NULL, @S INT = NULL;  
SELECT [Result] = IIF( 45 > 30, @P, @S );

Berikut adalah hasil yang ditetapkan.

Result  
--------  
NULL  

Langkah berikutnya