SQL Server 2012 představil nový vestavěný logické funkce SQL IIF. Jedná se o zkrácenou formu psaní logiky prohlášení o případu nebo logiky if-ELSE.

V mém dřívějším článku jsme prozkoumali příkaz Case v SQL. Používáme případové prohlášení k vrácení výsledku na základě definované podmínky. Je to podobné jako IF..Jinak … pak příkaz vyhodnotí výraz a vrátí výstup. Příkaz case je k dispozici téměř ve všech verzích SQL Serveru.

pojďme prozkoumat tuto funkci SQL IIF v tomto článku.,

SQL IIF přehled

, použijte následující formát napsat Případě prohlášení logika v SQL dotazů

SELECT CASE Výraz, Když výraz1 a Pak Result1, Když výraz2 Pak Result2 … JINÝ Výsledek

můžeme napsat tento kód pomocí SQL IIF syntaxe příkazu jako následující.

IIF(boolean_expression, true_value, false_value)

  • Boolean_expression: první parametr v SQL IIF je logický výraz., To by mělo být platný logický výraz ještě dostaneme výjimku
  • True_Value: Pokud boolean_expression je PRAVDA, vrátí hodnotu zadanou v true_value parametr
  • False_Value: Pokud boolean_expression je FALSE, vrátí hodnotu zadanou v false_value parametr

Pojďme prozkoumat SQL IIF pomocí příkladů.

Příklad 1: SQL IIF pro srovnání celočíselné hodnoty

V následujícím příkladu zadaný Logický výraz vrátí hodnotu False ( 2>3 není PRAVDA)., 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.,

Příklad 3: SQL IIF porovnat dva řetězce

V následujícím příkladu chceme porovnat řetězec data pomocí SQL IIF. Chceme znát osobu, která má ráda, na základě jména osoby.,

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., V následujícím příkladu osoba Vinay neexistuje v proměnné @Person, takže vrací hodnotu za falešnou klauzuli.

    4. Příklad: Vnořené SQL IIF

    můžeme použít Vnořené SQL IIF stejně zadat více podmínek,

    V tomto SQL funkce IIF, zkontroluje první podmínka a je-li podmínka splněna, vrátí hodnotu. V našem případě je to nepravdivé (osoba Vinay neodpovídá Raj).kontroluje druhou podmínku a vrací výsledky, pokud je to pravda.,

    Pokud žádná z podmínek, je pravda, vrátí výchozí falešnou zprávu.

    Příklad 5: SQL IIF s sloupce tabulky

    V předchozích příkladech jsme buď zadat hodnoty přímo v IIF nebo zadané proměnné. Obvykle ji chceme použít s existujícími daty v tabulce SQL. Můžeme také použít prohlášení IIF se sloupcem tabulky.,

    v následujícím příkladu chceme znát název dodavatele z tabulky PurchaseOrders v databázi WideWorldImporters.

    Pokud název dodavatele neexistuje pro konkrétní ID dodavatele, vrátí zadanou falešnou hodnotu v příkazu SQL IIF.

    Příklad 6: SQL IIF s sloupce tabulky a agregační funkce

    Příklad 7: SQL IIF a typ dat přednost

    možná Máme různé typy dat pro výsledky., Pokud máme různé datové typy uvedené ve výsledkových podmínkách, SQL Server dává nejvyšší přednost datovému typu. V následujícím příkladu pro falešný stav (11>19) bude výsledkem argument false_value, tj. 100. Mělo by to být datového typu E integer, ale dostaneme výstup 40.0, protože druhý argument float (2.6) má vysokou prioritu než celé číslo.,

    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, úroveň 16, Stav 1, řádek 1 alespoň jeden z výrazů výsledku ve specifikaci případu musí být jiný výraz než nulová konstanta.

    v chybové zprávě můžete vidět, že poskytuje informace o specifikaci případu, ale použili jsme funkci SQL IIF. Podíváme se na to v dalším příkladu.

    měli byste zadat alespoň jeden z pravdivých nebo falešných argumentů.,

    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., Ano, Je to pravda. Interně SQL Server převádí příkaz do příkazu CASE a provádí. Můžeme to zkontrolovat pomocí skutečného plánu provedení dotazu.

    proveďte dotaz z příkladu 6 se skutečným plánem provádění.

    ve skutečném plánu provádění se podívejte na vlastnosti výpočetního skaláru. Můžete vidět, že provádí prohlášení o případu interně.

    Závěr

    V tomto článku jsme se zabývali SQL IIF, že je nový způsob psaní PŘÍPADĚ prohlášení související podmínky., Je k dispozici od SQL 2012 dále. Měli byste to prozkoumat, abyste se s tím seznámili. Pokud máte nějaké připomínky nebo dotazy, neváhejte je nechat v komentářích níže.,

    • Autora
    • Poslední Příspěvky
    Jako MCSA certifikované a Microsoft Certified Trainer v Gurgaon, Indie, s 13 let zkušeností, Rajendra pracuje pro řadu velkých společností se zaměřením na optimalizaci výkonu, monitorování, vysoké dostupnosti a disaster recovery strategie a provádění., Je autorem stovek autoritativních článků o SQL Serveru, Azure, MySQL, Linuxu, Power BI, Performance tuning, AWS/Amazon RDS, Git a souvisejících technologiích, které dosud vidělo více než 10M čtenářů.
    je tvůrcem jedné z největších bezplatných online sbírek článků na jedno téma, s jeho 50dílnou sérií na serveru SQL vždy na skupinách dostupnosti. Na základě svého příspěvku do komunity SQL Server byl v letech 2020 a 2021 na sqlshacku nepřetržitě oceněn různými oceněními včetně prestižního „nejlepšího autora roku“.,
    Raj je vždy zájem o nové výzvy, takže pokud budete potřebovat poradenství na jakékoliv téma, na něž v jeho spisech, on může být dosaženo na rajendra.gupta16@gmail.,com
    Zobrazit všechny příspěvky od Rajendra Gupta

    Nejnovější příspěvky Rajendra Gupta (zobrazit všechny)
    • Vykonávající vedlejší a hlavní verze aktualizace pro AWS RDS SQL Server – 29. ledna, 2021
    • Nasazení AWS RDS instance PostgreSQL – 27. ledna 2021
    • Migrace v prostorách SQL databází AWS RDS serveru SQL Server pomocí AWS DMS – 25. ledna 2021

    Napsat komentář

    Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *