SQL Server 2012 führte eine neue integrierte logische Funktion SQL IIF. Es ist eine Kurzform zum Schreiben von CASE-Anweisungslogik oder IF-ELSE-Logik.

Wir untersuchten Case-Anweisung in SQL in meinem früheren Artikel. Wir verwenden eine case-Anweisung, um ein Ergebnis basierend auf der definierten Bedingung zurückzugeben. Es ist ähnlich wie ein IF..ELSE…then-Anweisung wertet einen Ausdruck aus und gibt die Ausgabe an. Die case-Anweisung ist in fast allen Versionen von SQL Server verfügbar.

Lassen Sie uns diese SQL IIF-Funktion in diesem Artikel untersuchen.,

SQL-IIF-Anweisung-überblick

Wir verwenden das folgende format zum schreiben von Case-Anweisung Logik in SQL-Abfragen

SELECT CASE Ausdruck, Wenn expression1 Dann Result1 Wenn expression2 Dann Result2 … ELSE Result END

Wir können schreiben Sie diesen code mit SQL-IIF-Anweisung-syntax wie folgt.

IIF(boolean_expression, true_value, false_value)

  • Boolean_expression: Der erste parameter in der SQL-IIF-Anweisung ein boolescher Ausdruck., Es sollte ein gültiger boolescher Ausdruck sein sonst erhalten wir eine Ausnahme
  • True_Value: Wenn der boolean_expression WAHR ist, gibt er den im Parameter true_value angegebenen Wert zurück
  • False_Value: Wenn der boolean_expression FALSCH ist, gibt er den im Parameter false_value angegebenen Wert zurück

Lassen Sie uns die SQL IIF-Anweisung anhand von Beispielen untersuchen.

Beispiel 1: SQL IIF-Anweisung zum Vergleichen von ganzzahligen Werten

Im folgenden Beispiel gibt der angegebene Boolesche Ausdruck False zurück ( 2>3 ist nicht WAHR)., Due to this, it returns the value specified in the false_value parameter.

1
SELECT IIF(2 > 3, ‚TRUE‘, ‚FALSE‘ )

Similarly, if the condition is TRUE (5>3 is TRUE) so it returns the value of true_value parameter.,

1
SELECT IIF(5 > 3, ‚TRUE‘, ‚FALSE‘ )

Example 2: SQL IIF statement with variables

In the following example, we specified two integer variables and assigned values. We use variables for comparison in the IIF statement.,

1
2

DECLARE @A INT = 80, @B INT = 70
SELECT IIF(@A >= @B, ‚PASS‘, ‚FAIL‘ )

The specified condition (80>70) is TRUE, so it returns the value PASS.,

Beispiel 3: SQL IIF-Anweisung zum Vergleichen von zwei Zeichenfolgen

Im folgenden Beispiel möchten wir die Zeichenfolgendaten mit der SQL IIF-Anweisung vergleichen. Wir möchten die Person wissen, die auf dem Personennamen basiert.,

1
2

DECLARE @Person Varchar(100) = ‚Raj‘
SELECT IIF(@Person=’Raj‘,’Likes Apple‘,’NA‘)

We can specify multiple conditions in SQL IIF statement as well.,i>

  • Else all other persons like orange
  • 1
    2

    DECLARE @Person Varchar(100) = ‚Raj‘
    SELECT IIF(@Person in(‚Raj‘, ‚Mohan‘),’Likes Apple‘,’Likes Orange‘)

    The query should return Likes Orange if the person name is not in the IN clause., Im folgenden Beispiel ist Person_lay in der Variablen @Person nicht vorhanden, daher wird ein Wert für eine false Klausel zurückgegeben.

    Beispiel 4: Verschachtelte SQL IIF-Anweisung

    Wir können auch verschachtelte SQL IIF-Anweisung verwenden, um mehrere Bedingungen anzugeben

    In dieser SQL IIF-Funktion wird nach der ersten Bedingung gesucht und wenn die Bedingung WAHR ist, wird der Wert zurückgegeben. In unserem Fall ist es FALSCH (Person Vinay stimmt nicht mit Raj überein). Es prüft auf die andere Bedingung und gibt Ergebnisse zurück, wenn es WAHR ist.,

    Wenn keine der Bedingungen wahr ist, es gibt den Standard-falsche Botschaft.

    Beispiel 5: SQL IIF-Anweisung mit einer Tabellenspalte

    In den vorherigen Beispielen geben wir entweder Werte direkt in der IIF-Anweisung an oder spezifizierte Variablen dafür. Normalerweise möchten wir es mit den vorhandenen Daten in einer SQL-Tabelle verwenden. Wir können die IIF-Anweisung auch mit einer Tabellenspalte verwenden.,

    Im folgenden Beispiel möchten wir den Lieferantennamen aus der Tabelle PurchaseOrders in der WideWorldImporters-Datenbank kennen.

    Wenn der Lieferantenname für eine bestimmte Lieferanten-ID nicht vorhanden ist, wird der angegebene falsche Wert in der SQL IIF-Anweisung zurückgegeben.

    Beispiel 6: SQL IIF-Anweisung mit Tabellenspalte und Aggregatfunktion

    Beispiel 7: SQL IIF-Anweisung und Datentypvorrang

    Möglicherweise haben wir für die Ergebnisse verschiedene Datentypen., Wenn in den Ergebnisbedingungen unterschiedliche Datentypen angegeben sind, gibt SQL Server den Datentyp mit der höchsten Priorität an. Im folgenden Beispiel ist für die falsche Bedingung(11>19) das Ergebnis das Argument false_value, dh 100. Es sollte vom Datentyp e integer sein, aber wir erhalten die Ausgabe 40.0, da das andere Argument float (2.6) Vorrang vor einer Ganzzahl hat.,

    1
    SELECT IIF(11 > 19, 2.6, 40)

    You can check the data type precedence in the following image

    Example 8: SQL IIF with NULL values

    We should be careful in NULL values inside the SQL IIF function.,

    1
    2
    3

    SELECT
    IIF(100 > 99, NULL, NULL) AS Result;

    We cannot specify NULL in both the true and false arguments. We get the following error message.,

    Msg 8133, Ebene 16, Zustand 1, Zeile 1 Mindestens einer der Ergebnisausdrücke in einer Fallspezifikation muss ein anderer Ausdruck als die Nullkonstante sein.

    In der Fehlermeldung können Sie sehen, dass sie Informationen zur Fallspezifikation enthält, jedoch haben wir die SQL IIF-Funktion verwendet. Wir werden dies im nächsten Beispiel betrachten.

    Sie sollten mindestens eines der Argumente true oder false angeben.,

    1
    2

    SELECT
    IIF(100 > 99, ‚Hello‘, NULL) AS Result;

    The similarity between SQL IIF statement and CASE Statement

    In the introduction of SQL IIF Statement, we mentioned that it is a shorthand form of writing CASE statement logic or IF-ELSE logic., Ja, es ist wahr. Intern konvertiert SQL Server die Anweisung in die CASE-Anweisung und führt sie aus. Wir können es anhand des tatsächlichen Ausführungsplans einer Abfrage überprüfen.

    Führen Sie die Abfrage aus Beispiel 6 mit einem tatsächlichen Ausführungsplan aus.

    Schauen Sie sich im eigentlichen Ausführungsplan die Eigenschaften von Compute Scalar an. Sie können sehen, dass es die CASE-Anweisung intern ausführt.

    Schlussfolgerung

    In diesem Artikel haben wir die SQL IIF-Anweisung untersucht, die eine neue Art des Schreibens von CASE-Anweisungen ist verwandte Bedingungen., Es ist ab SQL 2012 verfügbar. Sie sollten dies erkunden, um damit vertraut zu sein. Wenn Sie Kommentare oder Fragen haben, können Sie diese gerne in den Kommentaren unten hinterlassen.,

    • Author
    • Recent Posts
    Als MCSA-zertifizierter und Microsoft-zertifizierter Trainer in Gurgaon, Indien, mit 13 Jahren erfahrung, Rajendra arbeitet für eine Vielzahl von großen Unternehmen mit Schwerpunkt auf Leistungsoptimierung, Überwachung, Hochverfügbarkeit, und Disaster Recovery Strategien und Umsetzung., Er ist Autor von Hunderten von maßgeblichen Artikeln zu SQL Server, Azure, MySQL, Linux, Power BI, Performance Tuning, AWS/Amazon RDS, Git und verwandten Technologien, die bisher von über 10 millionen Lesern angesehen wurden.
    Er ist der Schöpfer einer der größten kostenlosen Online-Sammlungen von Artikeln zu einem einzigen Thema, mit seiner 50-teiligen Serie auf SQL Server Immer auf Verfügbarkeitsgruppen. Aufgrund seines Beitrags zur SQL Server-Community wurde er 2020 und 2021 kontinuierlich mit verschiedenen Preisen ausgezeichnet, darunter mit dem renommierten „Best Author of the year“ bei SQLShack.,
    Raj ist immer an neuen Herausforderungen interessiert, wenn Sie also Beratungshilfe zu einem Thema benötigen, das in seinen Schriften behandelt wird, kann er bei Rajendra erreicht werden.gupta16@gmail.,com
    Alle Beiträge von Rajendra Gupta anzeigen

    Neueste Beiträge von Rajendra Gupta (siehe alle)
    • Durchführen von kleineren und größeren Versionsupgrades für AWS RDS SQL Server – 29.
    • Migrieren Ihrer lokalen SQL – Datenbanken mit AWS DMS auf AWS RDS SQL Server-25. Januar 2021

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.