SQL Server IF…ELSE Tingimuste avaldus: T-SQL-i valikupäringu näide
Miks on vaja tingimuslikke avaldusi?
Tingimuslaused SQL-serveris aitavad defineerida erinevate tingimuste jaoks erinevaid loogikaid ja toiminguid. See võimaldab teil teha erinevaid toiminguid, mis põhinevad avalduses määratletud tingimustel. Päriselus teete paljusid toiminguid, mis sõltuvad mõne muu tegevuse või olukorra tulemusest.
Mõned SQL-i juhtumilause reaalajas näited on järgmised:
- Kui homme vihma sajab, siis plaanin maanteereisi.
- Kui minu linnast on lennupiletid alla 400 dollari, siis lähen Euroopasse puhkama, muidu eelistan mõnda lähedalasuvat turistikohta.
Siin näete, et üks toiming, nagu ülaltoodud Road trip, on tinglikult sõltuv teise tegevuse tulemusel, milleks on "kas homme sajab vihma või mitte!"
Samamoodi pakub MS SQL ka võimalust T-SQL-lause tingimuslikult täita.
IF… Muu lause SQL Serveris
In MS SQL, KUI...MUI on tüüpi Tingimuslik väide.
Mis tahes T-SQL-i avaldust saab tingimuslikult käivitada kasutades KUI… MUUD.
Allolev joonis selgitab IF ELSE SQL-serveris:
- Kui seisundit hinnatakse Tõsi, seejärel T-SQL avaldused, millele järgneb IF SQL-serveris olev tingimus täidetakse.
- Kui seisundit hinnatakse Vale seejärel T-SQL avaldused, millele järgneb VEEL märksõna käivitatakse.
- Kui IF T-SQL laused või ELSE T-SQL avaldus on täidetud, siis muud tingimusteta T-SQL laused jätkavad täitmist.
IF… Else Süntaks ja reeglid SQL-is
süntaksit:
IF <Condition> {Statement | Block_of_statement} [ ELSE {Statement | Block_of_statement}]
Reeglid:
- Tingimus peaks olema Boole'i avaldis, st tingimus annab hindamisel Boole'i väärtuse.
- KUI MUU avaldus sisse SQL saab tinglikult käsitleda ühte T-SQL-lauset või T-SQL-lausete plokki.
- Lauseplokk peaks algama märksõnaga BEGIN ja lõpetama märksõnaga END.
- BEGIN ja END kasutamine aitab SQL-serveril tuvastada käivitatavat lauseplokki ja eraldada see ülejäänud T-SQL-lausetest, mis ei kuulu IF…ELSE T-SQL-i plokki.
- ELSE on valikuline.
IF…ELSE Boole'i avaldises ainsa arvväärtusega.
Seisukord: TÕENE
IF (1=1) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
Seisukord: VALE
IF (1=2) PRINT 'IF STATEMENT: CONDITION IS TRUE' ELSE PRINT 'ELSE STATEMENT: CONDITION IS FALSE'
Eeldus: Oletame, et teil on tabel kujul "Guru99" kahe veeru ja nelja reaga, nagu allpool näidatud:
Me kasutame "Guru99" tabel järgmistes näidetes
IF…ELSE muutujaga Boole'i avaldises.
Seisukord: TÕENE
DECLARE @Course_ID INT = 4 IF (@Course_ID = 4) Select * from Guru99 where Tutorial_ID = 4 ELSE Select * from Guru99 where Tutorial_ID != 4
Seisukord: VALE
DECLARE @Course_ID INT = 4 IF (@Course_ID != 4) Select * from Guru99 where Tutorial_ID = 4 ELSE Select * from Guru99 where Tutorial_ID != 4
KUI…ELSE koos Alguslõpuga
Seisukord: TÕENE
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
Seisukord: VALE
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-avaldus koos No Else'iga
SQL-is saate kasutada IF-lauset ilma ELSE-osata. Pidage meeles, et märkisime, et ELSE osa on valikuline. Näiteks:
DECLARE @Course_ID INT = 2 IF (@Course_ID <=2) Select * from Guru99 where Tutorial_ID = 1
See prindib järgmise:
Vale tingimuse täitmine ei anna väljundit. Mõelge järgmisele päringule
DECLARE @Course_ID INT = 2 IF (@Course_ID <=0) Select * from Guru99 where Tutorial_ID = 1
Tulemus see
Pesastatud IF…Else avaldused
erinevalt teistest programmeerimiskeeled, ei saa te SQL-is IF ELSE tingimusesse ELSE IF-lauset lisada. Seetõttu saate SQL-päringulausetesse pesastada IF ELSE. Seda näidatakse allpool:
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;
- Selles näites prinditakse kood alaealine, kui @age väärtus on alla 18.
- Kui ei, siis teostatakse ELSE osa. ElSE osas on pesastatud IF…ELSE.
- Kui @age väärtus on alla 50, trükitakse see You are under 50. Kui ükski neist tingimustest ei ole tõene, trükitakse koodis Senior.
kokkuvõte
- Muutujad on objekt, mis toimib kohahoidjana.
- Lauseplokk peaks algama märksõnaga BEGIN ja lõpetama märksõnaga END.
- Else on valikuline IF… ELSE avalduses
- Tingimuse SQL IF ELSE pesastamine teise IF…ELSE lausesse on samuti võimalik.