SQL Server IF…ELSE Betingelseserklæring: T-SQL Select Query Eksempel
Hvorfor trenger du betingede erklæringer?
Betingede setninger i SQL-serveren hjelper deg med å definere ulike logikker og handlinger for ulike forhold. Den lar deg utføre forskjellige handlinger basert på forhold definert i setningen. I det virkelige liv utfører du mange handlinger avhengig av utfallet av en annen aktivitet eller situasjon.
Noen sanntidseksempler på SQL case-setning er:
- Hvis det regner i morgen, planlegger jeg en biltur.
- Hvis flybilletter er mindre enn $400 fra byen min, vil jeg reise på ferie i Europa, ellers vil jeg foretrekke et turiststed i nærheten.
Her kan du se at en handling, som Roadtrip ovenfor, er betinget avhengig på utfallet av en annen aktivitet som er "om det vil regne eller ikke i morgen!"
Tilsvarende gir MS SQL også muligheten til å utføre T-SQL-setning betinget.
IF… Else-setning i SQL Server
In MS SQL, HVIS…ANNET er en type Betinget uttalelse.
Enhver T-SQL-setning kan utføres betinget ved å bruke HVIS… ANNET.
Figuren nedenfor forklarer IF ELSE i SQL-serveren:
- Hvis tilstanden vurderes til Ekte, deretter T-SQL-setninger etterfulgt av IF betingelse i SQL-server vil bli utført.
- Hvis tilstanden vurderes til false, deretter T-SQL-setninger etterfulgt av ELSE nøkkelordet vil bli utført.
- En gang, enten IF T-SQL-setninger eller ELSE T-SQL-setninger er utført, fortsetter andre ubetingede T-SQL-setninger kjøringen.
IF… Else Syntaks og regler i SQL
Syntaks:
IF <Condition> {Statement | Block_of_statement} [ ELSE {Statement | Block_of_statement}]
regler:
- Tilstanden bør være boolsk uttrykk, dvs, betingelse resulterer i boolsk verdi når den evalueres.
- IF ELSE-uttalelse i SQL kan betinget håndtere en enkelt T-SQL-setning eller blokk med T-SQL-setninger.
- Utsagnsblokken bør starte med søkeordet BEGIN og lukkes med søkeordet END.
- Bruk av BEGIN og END hjelper SQL-serveren til å identifisere setningsblokk som må utføres og skille den fra resten av T-SQL-setningene som ikke er en del av IF…ELSE T-SQL-blokken.
- ANDET er valgfritt.
HVIS…ANNE med den eneste numeriske verdien i boolsk uttrykk.
Tilstand: SANN
IF (1=1) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
Tilstand: FALSE
IF (1=2) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
Antagelse: Anta at du har tabellen som 'Guru99' med to kolonner og fire rader som vist nedenfor:
Vi vil bruke 'Guru99' tabell i ytterligere eksempler
IF…ELSE med variabelen i boolsk uttrykk.
Tilstand: SANN
DECLARE @Course_ID INT = 4 IF (@Course_ID = 4) Select * from Guru99 where Tutorial_ID = 4 ELSE Select * from Guru99 where Tutorial_ID != 4
Tilstand: FALSE
DECLARE @Course_ID INT = 4 IF (@Course_ID != 4) Select * from Guru99 where Tutorial_ID = 4 ELSE Select * from Guru99 where Tutorial_ID != 4
IF ... ELSE med Begin End
Tilstand: SANN
DECLARE @Course_ID INT = 2 IF (@Course_ID <=2) BEGIN Select * from Guru99 where Tutorial_ID = 1 Select * from Guru99 where Tutorial_ID = 2 END ELSE BEGIN Select * from Guru99 where Tutorial_ID = 3 Select * from Guru99 where Tutorial_ID = 4 END
Tilstand: FALSE
DECLARE @Course_ID INT = 2 IF (@Course_ID >=3) BEGIN Select * from Guru99 where Tutorial_ID = 1 Select * from Guru99 where Tutorial_ID = 2 END ELSE BEGIN Select * from Guru99 where Tutorial_ID = 3 Select * from Guru99 where Tutorial_ID = 4 END
IF-uttalelse med No Else
Du kan bruke en IF-setning i SQL uten en ELSE-del. Husk at vi sa at ELSE-delen er valgfri. For eksempel:
DECLARE @Course_ID INT = 2 IF (@Course_ID <=2) Select * from Guru99 where Tutorial_ID = 1
Den skriver ut følgende:
Utførelse av den falske tilstanden vil ikke gi noe utdata. Vurder følgende spørring
DECLARE @Course_ID INT = 2 IF (@Course_ID <=0) Select * from Guru99 where Tutorial_ID = 1
Resultatet det
Nestede IF…Else-uttalelser
I motsetning til andre programmerings språk, kan du ikke legge til en ELSE IF-setning i en IF ELSE-betingelse i SQL. Dette er grunnen til at du kan neste IF ELSE i SQL-spørringssetninger. Det er demonstrert nedenfor:
DECLARE @age INT; SET @age = 60; IF @age < 18 PRINT 'underage'; ELSE BEGIN IF @age < 50 PRINT 'You are below 50'; ELSE PRINT 'Senior'; END;
- I dette eksemplet vil koden skrive ut mindreårige hvis verdien av @age er under 18.
- Hvis ikke, vil ELSE-delen bli utført. ElSE-delen har en nestet IF…ELSE.
- Hvis verdien av @age er under 50, vil dette skrives ut. Du er under 50. Hvis ingen av disse betingelsene er sanne, vil koden skrive ut Senior.
Oppsummering
- Variabler er objektet som fungerer som en plassholder.
- Utsagnsblokken bør starte med søkeordet BEGIN og lukkes med søkeordet END.
- Else er valgfritt å bruke i IF… ELSE-setningen
- Nesting av SQL IF ELSE-tilstand i en annen IF…ELSE-setning er også mulig.