SQL Server-2012 innført en ny innebygd logisk funksjon SQL IIF. Det er en forkortelse form av skriftlig TILFELLE uttalelse logikk eller OM-ANNET logikk.

Vi utforsket Tilfelle setning i SQL i min tidligere artikkel. Vi bruker en case-uttrykket til å returnere et resultat som er basert på det som er definert tilstand. Det ligner på et HVIS..ANDRE…SÅ uttalelse beregner et uttrykk og returnerer resultatet. Saken uttalelsen er tilgjengelig i nesten alle versjoner av SQL Server.

La oss utforske denne SQL IIF-funksjonen i denne artikkelen.,

SQL IIF Uttalelse oversikt

Vi bruke følgende format for å skrive Tilfelle uttalelse logikk i SQL-spørringer

VELG TILFELLE Uttrykk Når expression1 Så Result1 Når expression2 Så Result2 … ANNET Resultat END

Vi kan skrive denne koden ved hjelp av SQL IIF uttalelse syntaks som følgende.

IIF(boolean_expression, true_value, false_value)

  • Boolean_expression: Den første parameteren i SQL IIF uttalelse er et boolsk uttrykk., Det bør være en gyldig boolske uttrykket annet får vi et unntak
  • True_Value: Hvis boolean_expression er SANN, returnerer den verdien som er angitt i true_value parameteren
  • False_Value: Hvis boolean_expression er FALSE, returnerer den verdien som er angitt i false_value parameteren

La oss utforske SQL IIF uttalelse ved hjelp av eksempler.

Eksempel 1: SQL IIF uttalelse for å sammenligne heltall

I det følgende eksemplet, er angitt Boolsk uttrykk returnerer False ( 2>3 er ikke SANT)., 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.,

Eksempel 3: SQL IIF uttalelse for å sammenligne to strenger

I det følgende eksemplet, vi ønsker å sammenligne string data ved hjelp av SQL IIF uttalelse. Vi ønsker å vite person liker basert på personen navn.,

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., I følgende eksempel, person Vinay ikke finnes i variabel @Person, slik at den returnerer verdien for en falsk punkt.

    Eksempel 4: Nestede SQL IIF uttalelse

    Vi kan bruke Nestede SQL IIF uttalelse samt å angi flere betingelser

    I denne SQL IIF-funksjonen, er det sjekker for den første betingelsen og hvis betingelsen er SANN, returnerer verdien. I vårt tilfelle, det er FALSK, ( Personen Vinay ikke samsvarer med Raj).Det sjekker for annen tilstand og resultater hvis det er SANT.,

    Dersom ingen av vilkårene er oppfylt, det gir standard falske meldingen.

    Eksempel 5: SQL IIF uttalelse med en tabellkolonne

    I det forrige eksemplet, vi enten angi verdiene direkte i IIF uttalelse eller angitte variablene for det. Vanligvis ønsker vi å bruke den sammen med eksisterende data i en SQL-tabellen. Vi kan bruke IIF uttalelse med en tabellkolonne som godt.,

    I det følgende eksemplet, vi ønsker å vite leverandør navn fra PurchaseOrders bord i WideWorldImporters database.

    Hvis leverandøren navnet ikke eksisterer for en bestemt leverandør-id, går den tilbake til den angitte falsk verdi i SQL IIF uttalelse.

    Eksempel 6: SQL IIF uttalelse med en tabellkolonne og samlede funksjonen

    Eksempel 7: SQL IIF-setningen og data type forrang

    Vi kan ha ulike typer data, for resultatene., Hvis vi har ulike typer data som er angitt i resultatet forhold, SQL Server gir høyest prioritet datatype. I følgende eksempel, for den falske tilstand(11>19), vil resultatet bli det false_value argument, dvs. 100. Det bør være av e heltall-datatype, men vi få den ut 40.0 fordi andre argument float (2.6) er av høy prioritet enn et heltall.,

    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 Nivå 16, Tilstand 1, Linje 1 På minst en av resultatet uttrykk i en SAK spesifikasjon må være et uttrykk for andre enn NULL konstant.

    feil I meldingen, kan du se den gir informasjon om SAKEN spesifikasjon men vi brukte SQL IIF-funksjonen. Vi vil se på dette i neste eksempel.

    bør Du angi minst ett av en sann eller usann 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., Ja, det er sant. Internt SQL Server konverterer uttalelse i SAKEN uttalelse og utfører. Vi kan sjekke det ved å bruke den faktiske plan for gjennomføring av en spørring.

    – Utfør spørring fra Eksempel 6 med en Faktisk gjennomføring plan.

    I selve utførelsen plan, se på egenskaper av Prosesserings-Skalar. Du kan se den utfører CASE-uttrykk internt.

    Konklusjon

    I denne artikkelen, vi utforsket SQL IIF-setning som er en ny måte å skrive TILFELLE uttalelse relaterte forhold., Den er tilgjengelig fra SQL 2012 og utover. Du bør utforske dette til å bli kjent med dette. Hvis du har noen kommentarer eller spørsmål, gjerne la dem i kommentarfeltet nedenfor.,

    • Forfatter
    • Siste Innlegg
    Som en MCSA sertifisert som Microsoft Certified Trainer i Gurgaon, India, med 13 års erfaring, Rajendra fungerer for en rekke store selskaper med fokus på ytelse optimalisering, overvåking, høy tilgjengelighet og gjenoppretting etter katastrofe strategier og gjennomføring., Han er forfatter av hundrevis av autoritative artikler på SQL Server, Azure, MySQL, Linux, Elektriske BI, ytelsesjustering, AWS/Amazon / RDS, Git, og relaterte teknologier som har blitt sett av over 10m lesere oppdatert.
    Han er skaperen av en av de største gratis online samlinger av artikler på et enkelt tema, med hans 50-del serien på SQL Server Alltid På Grupper av Tilgjengelighet. Basert på hans bidrag til SQL Server-samfunnet, han har blitt anerkjent med ulike priser inkludert den prestisjefylte «Beste forfatter av the year» kontinuerlig i 2020 og 2021 på SQLShack.,
    Raj er alltid interessert i nye utfordringer, slik at hvis du har behov for rådgivning hjelpe på alle fag som er dekket i hans skrifter, han kan nås på rajendra.gupta16@gmail.,com
    Vis alle innlegg av Rajendra Gupta

    Siste innlegg av Rajendra Gupta (se alle)
    • Utføre små og store versjon oppgraderinger for AWS RDS SQL Server – 29. januar 2021
    • Distribusjon AWS RDS-PostgreSQL-forekomster – 27. januar 2021
    • Migrere din lokale SQL databaser til AWS RDS SQL Server ved hjelp av AWS DMS – 25 januar 2021

    Legg igjen en kommentar

    Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *