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:
- 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'
Skick: FALSK
IF (1=2) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
Antagande: Antag att du har tabellen som "Guru99" med två kolumner och fyra rader som visas nedan:
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
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 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
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-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:
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
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.
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.