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:

Kuidas If ja Else töötab
Kuidas ja muidu töötab
  • 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'

IF…ELSE Boole'i ​​avaldises ainsa arvväärtusega

Seisukord: VALE

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

IF…ELSE Boole'i ​​avaldises ainsa arvväärtusega

Eeldus: Oletame, et teil on tabel kujul "Guru99" kahe veeru ja nelja reaga, nagu allpool näidatud:

IF…ELSE Boole'i ​​avaldises ainsa arvväärtusega

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

IF...ELSE muutujaga Boole'i ​​avaldises

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

IF...ELSE muutujaga Boole'i ​​avaldises

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

KUI...ELSE koos Alguslõpuga

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

KUI...ELSE koos Alguslõpuga

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:

IF-avaldus koos No Else'iga

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

IF-avaldus koos No Else'iga

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.

Pesastatud IF…Else avaldused

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.