Udostępnij za pomocą


Funkcje logiczne - IIF (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

Zwraca jedną z dwóch wartości, w zależności od tego, czy wyrażenie Boole'a w SQL Server jest prawdziwe czy fałszywe.

Transact-SQL konwencje składni

Składnia

IIF( boolean_expression, true_value, false_value )

Arguments

boolean_expression

Poprawne wyrażenie boole'a.

Jeśli ten argument nie jest wyrażeniem boolowskim, pojawia się błąd składniowy.

true_value

Wartość do zwrotu, jeśli boolean_expression wychodzi jako prawdziwa.

false_value

Wartość do zwrócenia, jeśli boolean_expression oceni jako fałszywe.

Typy zwracane

Zwraca typ danych o najwyższym precedencji spośród typów w true_value i false_value. Aby uzyskać więcej informacji, zobacz pierwszeństwo typu danych (Transact-SQL).

Uwagi

IIF to skrót na zapis wyrażenia CASE. Ocenia wyrażenie boolowskie przekazane jako pierwszy argument, a następnie zwraca jeden z pozostałych dwóch argumentów na podstawie wyniku oceny. To znaczy, true_value zwraca się, jeśli wyrażenie Boole'a jest prawdziwe, a false_value zwraca, jeśli wyrażenie boole'owskie jest fałszywe lub nieznane. true_value i false_value mogą być dowolnego rodzaju. Te same zasady, które dotyczą wyrażenia CASE dla wyrażeń boolowskich, obsługi zerowych i typów return, dotyczą także IIF. Więcej informacji można znaleźć w CASE (Transact-SQL).

Fakt, że IIF jest tłumaczony na CASE, ma również wpływ na inne aspekty zachowania tej funkcji. Ponieważ wyrażenia CASE mogą być zagnieżdżone tylko do poziomu 10, instrukcje IIF mogą być zagnieżdżone tylko do maksymalnego poziomu 10. Ponadto IIF jest zdalnie przekazywany do innych serwerów jako semantycznie równoważne wyrażenie CASE, ze wszystkimi zachowaniami zdalnego wyrażenia CASE.

IIF nie jest obsługiwany w dedykowanych pulach SQL w Azure Synapse Analytics.

Przykłady

A. Prosty przykład z IIF

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

Oto zestaw wyników.

Result  
--------  
TRUE  

B. IIF z stałymi NULLOWYMI

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

Efektem tego stwierdzenia jest błąd.

C. IIF z parametrami NULL

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

Oto zestaw wyników.

Result  
--------  
NULL  

Dalsze kroki