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>
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
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
- 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