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:

Hvordan hvis og annet fungerer
Hvordan hvis og annet fungerer
  • 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'

HVIS…ANNE med den eneste numeriske verdien i boolsk uttrykk

Tilstand: FALSE

IF (1=2)
PRINT 'IF STATEMENT: CONDITION IS TRUE'
ELSE
PRINT 'ELSE STATEMENT: CONDITION IS FALSE'

HVIS…ANNE med den eneste numeriske verdien i boolsk uttrykk

Antagelse: Anta at du har tabellen som 'Guru99' med to kolonner og fire rader som vist nedenfor:

HVIS…ANNE med den eneste numeriske verdien i boolsk uttrykk

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

IF...ELSE med variabelen i boolsk uttrykk

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 variabelen i boolsk uttrykk

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

IF...ANDES med Begin 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...ANDES med Begin 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:

IF-uttalelse med No Else

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

IF-uttalelse med No Else

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.

Nestede IF…Else-uttalelser

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.