Aracılığıyla paylaş


Mantıksal Fonksiyonlar - IIF (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

SQL Server'da Boolean ifadesinin doğru mu yanlış mı değerlendirildiğine bağlı olarak iki değerden birini döndürür.

Transact-SQL söz dizimi kuralları

Sözdizimi

IIF( boolean_expression, true_value, false_value )

Arguments

boolean_expression

Geçerli bir Boolean ifadesi.

Eğer bu argüman bir boolean ifadesi değilse, sözdizimi hatası ortaya çıkar.

true_value

Eğer boolean_expression doğru olarak değerlendirilirse geri dönecek değer.

false_value

Eğer boolean_expression yanlış olarak değerlendirilirse iade edilecek değer.

Dönüş Türleri

true_value ve false_value türlerinden en yüksek önceliğe sahip veri tipini döndürür. Daha fazla bilgi için bkz. Veri Türü Önceliği (Transact-SQL).

Açıklamalar

IIF, bir CASE ifadesi yazmanın kısaltma yoludur. İlk argüman olarak geçilen Boolean ifadesini değerlendirir ve ardından değerlendirme sonucuna göre diğer iki argümandan birini geri getirir. Yani, Boolean ifadesi doğruysa true_value döner, Boolean ifadesi yanlış veya bilinmiyorsa false_value döner. true_value ve false_value her türden olabilir. Boolean ifadeleri, null işleme ve dönüş tipleri için CASE ifadesine uygulanan aynı kurallar IIF için de geçerlidir. Daha fazla bilgi için bkz. CASE (Transact-SQL).

IIF'nin CASE'e çevrilmesi, bu fonksiyonun davranışının diğer yönlerini de etkiler. CASE ifadeleri yalnızca 10 seviyesine kadar iç içe alınabildiğinden, IIF ifadeleri de yalnızca maksimum 10 seviyesine kadar iç içe alınabilir. Ayrıca, IIF diğer sunuculara uzaktan bağlanmış bir CASE ifadesi olarak, uzaktan CASE ifadesinin tüm davranışlarını barındıran anlamsal eşdeğer bir CASE ifadesi olarak yönlendirilir.

IIF, Azure Synapse Analytics'te özel SQL havuzlarında desteklenmemektedir.

Örnekler

A. Basit IIF örneği

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

Sonuç kümesi aşağıdadır.

Result  
--------  
TRUE  

B. NULL sabitli IIF

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

Bu ifadenin sonucu bir hatadır.

C. NULL parametrelerle IIF

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

Sonuç kümesi aşağıdadır.

Result  
--------  
NULL  

Sonraki Adımlar