Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Baza 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