SQL Server 2012 Hur man använder IIF () Logical Function

SQL Server 2012 har infört den nya logiska funktionen IIF (). Funktionen för funktion IIF () är ganska lik CASE och IF-uttalanden i SQL Server. Med hjälp av IIF () kan du använda färre linjer kod och din kod kommer att läsas mer.

Låt oss utforska funktionen IIF () med några exempel.

IIF () - Funktionen returnerar ett av de två värdena, beroende på om det angivna booleska uttrycket utvärderas till true eller false.

Syntax: IIF (boolean_expression, true_value, false_value)


• Det första argumentet (boolean_expression) accepterar det booleska uttrycket som ska utvärderas.
• Funktionen returnerar andra argumentet (true_value), om booleskt uttryck utvärderas till true.
• Funktionen returnerar tredje argumentet (false_value) betyder att booleskt uttryck har misslyckats.

Låt oss se några snabba SQL-frågor med funktion IIF ()

Exempel 1.1: Jämför två tal med IIF ()

SELECT IIF (1> 0, 'True', 'False') AS 'Output' GO-utgång ------ True


Exempel 1.2: Jämför två datum med IIF ()

SELECT IIF ('10 / 15/2012 '> '01 / 01/2012', 'Ja', 'Nej') AS 'Output' GO Output ------ Ja


Exempel 1.3: Jämför två heltal variabler med IIF ()

DECLARE @ num1 AS INT = 150 DECLARE @ num2 AS INT = 100 SELECT IIF (@ num1 <@ num2, 'True', 'False') AS 'Output' GO-utgång ------ False


Exempel 1.4: Jämför två strängar med IIF ()
De flesta av er undrar varför vi ska använda IIF () över CASE och IF-uttalanden.

IIF () ser mer läsbar, är enklare att hantverk, och har färre koder jämfört med CASE och IF-uttalanden.

Låt oss kontrastera olika metoder för att jämföra två strängar med hjälp av IF, CASE och IIF () Function.

DECLARE @ str som varchar (20) = 'tech-recept' om (@str = 'tech-recipes') välj 'Ja' AS 'OUTPUT' ELLER välj 'Nej' AS 'OUTPUT' GÅ UTGÅNG ------ Ja
DECLARE @ str AS varchar (20) = 'tech-recept' välj CASE när @ str = 'tech-recept' DÄR 'Ja' ÖVRIGT 'Nej' ENDA 'Utgång' GÅ UTGÅNG ------ Ja
DECLARE @ str som varchar (20) = 'tech-recept' välj IIF (@str = 'tech-recipes', 'ja', 'nej') som OUTPUT GO OUTPUT ------ Ja


Ovanstående tre frågor använder IF, CASE och IIF () Funktion gör samma sak och returnerar samma resultat. Men med hjälp av IIF () är det enklare och mer läsbart.