SQL Server IF…ELSE Villkorssats: T-SQL Välj frågeexempel

Varför behöver du villkorsförklaringar?

Villkorssatser i SQL-servern hjälper dig att definiera olika logiker och åtgärder för olika förhållanden. Det låter dig utföra olika åtgärder baserat på villkor som definieras i uttalandet. I det verkliga livet utför du många handlingar beroende på resultatet av någon annan aktivitet eller situation.

Några realtidsexempel på SQL-fallsatser är:

  • Om det regnar imorgon så planerar jag på en roadtrip.
  • Om flygbiljetter är mindre än $400 från min stad, kommer jag att åka på semester i Europa, annars föredrar jag någon närliggande turistplats.

Här kan du se att en åtgärd, som Roadtrip ovan, är villkorligt beroende om resultatet av en annan aktivitet som är "om det kommer att regna eller inte imorgon!"

På samma sätt ger MS SQL också möjligheten att exekvera T-SQL-satsen villkorligt.

IF... Annat uttalande i SQL Server

In MSSQL, OM ANNAT är en typ av Villkorligt uttalande.

Alla T-SQL-satser kan köras villkorligt med hjälp av OM ANNAT.

Bilden nedan förklarar IF ELSE i SQL-servern:

Hur If and Else fungerar
Hur om och annat fungerar
  • Om tillståndet utvärderas till Sann, sedan T-SQL-satser följt av IF villkoret i SQL-servern kommer att köras.
  • Om tillståndet utvärderas till Falsk, sedan T-SQL-satser följt av ANNARS nyckelordet kommer att köras.
  • När antingen IF T-SQL-satser eller ELSE T-SQL-satser exekveras, fortsätter andra ovillkorliga T-SQL-satser att köras.

IF... Annars Syntax och regler i SQL

Syntax:

IF <Condition>
     {Statement | Block_of_statement}   
[ ELSE   
     {Statement | Block_of_statement}]

regler:

  • Villkoret bör vara booleskt uttryck, dvs villkor resulterar i booleskt värde när det utvärderas.
  • IF ELSE uttalande i SQL kan villkorligt hantera en enda T-SQL-sats eller block av T-SQL-satser.
  • Block av uttalande bör börja med nyckelordet BEGIN och avslutas med sökordet END.
  • Att använda BEGIN och END hjälper SQL-servern att identifiera satsblock som behöver köras och separera det från resten av T-SQL-satserna som inte är en del av IF...ELSE T-SQL-blocket.
  • ANNAT är valfritt.

OM...ANS med det enda numeriska värdet i booleskt uttryck.

Skick: SANT

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

OM...ANS med det enda numeriska värdet i booleskt uttryck

Skick: FALSK

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

OM...ANS med det enda numeriska värdet i booleskt uttryck

Antagande: Antag att du har tabellen som "Guru99" med två kolumner och fyra rader som visas nedan:

OM...ANS med det enda numeriska värdet i booleskt uttryck

Vi kommer använda "Guru99" tabell i ytterligare exempel

IF...ELSE med variabeln i booleskt uttryck.

Skick: SANT

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 variabeln i booleskt uttryck

Skick: FALSK

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 variabeln i booleskt uttryck

IF… ELSE med Begin End

Skick: SANT

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

Skick: FALSK

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-uttalande med No Else

Du kan använda en IF-sats i SQL utan en ELSE-del. Kom ihåg att vi sa att ELSE-delen är valfri. Till exempel:

DECLARE @Course_ID INT = 2

IF (@Course_ID <=2)
	Select * from Guru99 where Tutorial_ID = 1

Den skriver ut följande:

IF-uttalande med No Else

Utförande av det falska villkoret ger ingen utdata. Överväg följande fråga

DECLARE @Course_ID INT = 2

IF (@Course_ID <=0)
	Select * from Guru99 where Tutorial_ID = 1

Resultatet det

IF-uttalande med No Else

Kapslade IF...Else-uttalanden

till skillnad från andra programmeringsspråkkan du inte lägga till en ELSE IF-sats i ett IF ELSE-villkor i SQL. Det är därför du kan kapsla IF ELSE i SQL-frågesatser. Det visas nedan:

 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 det här exemplet kommer koden att skriva ut minderårig om värdet på @age är under 18.
  • Om inte, kommer ELSE-delen att exekveras. ElSE-delen har en kapslad IF…ELSE.
  • Om värdet på @age är under 50 kommer detta att skrivas ut. Du är under 50. Om inget av dessa villkor är sant kommer koden att skrivas ut Senior.

Kapslade IF...Else-uttalanden

Sammanfattning

  • Variabler är det objekt som fungerar som en platshållare.
  • Block av uttalande bör börja med nyckelordet BEGIN och avslutas med sökordet END.
  • Else är valfritt att använda i IF… ELSE-satsen
  • Det är också möjligt att kapsla SQL IF ELSE-villkor i en annan IF…ELSE-sats.