SQL Server IF…ELSE Feltétel nyilatkozat: T-SQL Select Query példa
Miért van szükség feltételes nyilatkozatokra?
Az SQL-kiszolgáló feltételes utasításai segítenek a különböző feltételekhez különböző logikák és műveletek meghatározásában. Lehetővé teszi különböző műveletek végrehajtását az utasításban meghatározott feltételek alapján. A valós életben sok cselekvést hajt végre valamilyen más tevékenység vagy helyzet kimenetelétől függően.
Néhány valós idejű példa az SQL esetutasításra:
- Ha holnap esik az eső, tervezek egy kirándulást.
- Ha a repülőjegyek 400 dollár alatt vannak a városomból, akkor Európába megyek nyaralni, különben valamelyik közeli turistahelyet részesítem előnyben.
Itt láthatja, hogy egy művelet, például a fenti Road Trip, az feltételesen függő egy másik tevékenység eredményére, amely „esik-e vagy sem holnap!”
Hasonlóképpen, az MS SQL is lehetőséget biztosít a T-SQL utasítás feltételes végrehajtására.
IF… Else utasítás az SQL Serverben
In MS SQL, HA MÁS egyfajta Feltételes nyilatkozat.
Bármely T-SQL utasítás feltételesen végrehajtható a használatával HA MÁS.
Az alábbi ábra bemutatja az IF ELSE funkciót az SQL szerverben:
- Ha az állapot úgy értékelődik Igaz, majd a T-SQL utasításokat követi IF feltétel az SQL szerverben végrehajtásra kerül.
- Ha az állapot úgy értékelődik Hamis, majd a T-SQL utasításokat követi ELSE kulcsszó végrehajtásra kerül.
- Ha az IF T-SQL utasítások vagy az ELSE T-SQL utasítások végrehajtásra kerülnek, akkor a többi feltétel nélküli T-SQL utasítás végrehajtása folytatódik.
IF… Else Szintaxis és szabályok az SQL-ben
Syntax:
IF <Condition> {Statement | Block_of_statement} [ ELSE {Statement | Block_of_statement}]
Szabályok:
- A feltétel legyen Logikai kifejezés, azaz feltétel kiértékeléskor logikai értéket eredményez.
- HA MÁS nyilatkozat be SQL feltételesen kezelhet egyetlen T-SQL utasítást vagy T-SQL utasítások blokkját.
- Az utasításblokk a BEGIN kulcsszóval kezdődik, és az END kulcsszóval záruljon.
- A BEGIN és END használata segít az SQL szervernek azonosítani a végrehajtandó utasításblokkot, és elválasztani a többi T-SQL utasítástól, amelyek nem részei az IF…ELSE T-SQL blokknak.
- Az ELSE nem kötelező.
IF…ELSE a logikai kifejezés egyetlen numerikus értékével.
Állapot: IGAZ
IF (1=1) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
Állapot: HAMIS
IF (1=2) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
Feltevés: Tételezzük fel, hogy a táblázat a következő "Guru99" két oszloppal és négy sorral az alábbiak szerint:
Használni fogjuk "Guru99" táblázat a további példákban
IF…ELSE a Boolean kifejezés változójával.
Állapot: IGAZ
DECLARE @Course_ID INT = 4 IF (@Course_ID = 4) Select * from Guru99 where Tutorial_ID = 4 ELSE Select * from Guru99 where Tutorial_ID != 4
Állapot: HAMIS
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 a Begin End funkcióval
Állapot: IGAZ
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
Állapot: HAMIS
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 utasítás a Nincs más elemmel
Használhat IF utasítást SQL-ben ELSE rész nélkül. Ne feledje, hogy kijelentettük, hogy az ELSE rész nem kötelező. Például:
DECLARE @Course_ID INT = 2 IF (@Course_ID <=2) Select * from Guru99 where Tutorial_ID = 1
A következőket nyomtatja ki:
A hamis feltétel végrehajtása nem ad kimenetet. Fontolja meg a következő lekérdezést
DECLARE @Course_ID INT = 2 IF (@Course_ID <=0) Select * from Guru99 where Tutorial_ID = 1
Az eredmény az
Beágyazott IF…Else nyilatkozatok
eltérően más programozási nyelvek, nem adhat hozzá ELSE IF utasítást egy IF ELSE feltételhez az SQL-ben. Ez az oka annak, hogy az IF ELSE szót beágyazhatja az SQL lekérdezési utasításokba. Az alábbiakban látható:
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;
- Ebben a példában a kód akkor jelenik meg, ha a @age értéke 18 év alatti.
- Ha nem, akkor az ELSE rész végrehajtásra kerül. Az ElSE rész beágyazott IF…ELSE-t tartalmaz.
- Ha az @age értéke 50 alatt van, akkor az Ön 50 alatti vagy. Ha a fenti feltételek egyike sem teljesül, a kód Seniort fog kiírni.
Összegzésként
- A változók azok az objektumok, amelyek helyőrzőként működnek.
- Az utasításblokk a BEGIN kulcsszóval kezdődik, és az END kulcsszóval záruljon.
- Az Else használata nem kötelező az IF… ELSE utasításban
- Az SQL IF ELSE feltétel beágyazása egy másik IF…ELSE utasításba is lehetséges.