Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Microsoft Fabric
Returnerar ett av två värden, beroende på om det booleska uttrycket utvärderas till sant eller falskt i SQL Server.
Transact-SQL syntaxkonventioner
Syntax
IIF( boolean_expression, true_value, false_value )
Arguments
boolean_expression
Ett giltigt booleskt uttryck.
Om detta argument inte är ett boolesk uttryck uppstår ett syntaxfel.
true_value
Värde att returnera om boolean_expression utvärderas till sant.
false_value
Värde att returnera om boolean_expression utvärderas till falskt.
Returtyper
Returnerar datatypen med högst prioritet bland typerna i true_value och false_value. Mer information finns i Data Type Precedence (Transact-SQL).
Anmärkningar
IIF är ett förkortat sätt att skriva ett CASE-uttryck. Den utvärderar det booleska uttrycket som passerades som det första argumentet, och returnerar sedan något av de andra två argumenten baserat på resultatet av utvärderingen. Det vill säga, true_value returneras om det booleska uttrycket är sant, och false_value returneras om det booleska uttrycket är falskt eller okänt. true_value och false_value kan vara av vilken typ som helst. Samma regler som gäller för CASE-uttrycket för boolesk uttryck, nullhantering och returtyper gäller också för IIF. För mer information, se CASE (Transact-SQL).
Det faktum att IIF översätts till CASE påverkar också andra aspekter av funktionens beteende. Eftersom CASE-uttryck endast kan nästlas upp till nivån 10, kan IIF-satser också nästlas endast upp till maximal nivå 10. Dessutom fjärrstyrs IIF till andra servrar som ett semantiskt ekvivalent CASE-uttryck, med alla beteenden som ett fjärrstyrt CASE-uttryck.
IIF stöds inte i dedikerade SQL-pooler i Azure Synapse Analytics.
Examples
A. Enkelt exempel på IIF
DECLARE @a INT = 45, @b INT = 40;
SELECT [Result] = IIF( @a > @b, 'TRUE', 'FALSE' );
Här är resultatet.
Result
--------
TRUE
B. IIF med NULL-konstanter
SELECT [Result] = IIF( 45 > 30, NULL, NULL );
Resultatet av detta påstående är ett fel.
C. IIF med NULL-parametrar
DECLARE @P INT = NULL, @S INT = NULL;
SELECT [Result] = IIF( 45 > 30, @P, @S );
Här är resultatet.
Result
--------
NULL