F IF..ELSE statements i MS SQL Server

Generelt set er IF..ELSE en beslutningstagende erklæring i forskellige programmeringssprog. IF-erklæringen bruges til at udføre en kodeblok, hvis en betingelse er opfyldt. Hvis en betingelse ikke er opfyldt (FALSK), kan der eventuelt anvendes ELSE-erklæringen.

I SQL Server bruges IF-erklæringen til at udføre SQL-erklæringer, hvis en betingelse er TRUE.

For eksempel:

1
2
3
4
5
6
7

IF @table_name = “medarbejdere”
SELECT * FROM sto_employees;
ELSE
SELECT * FROM sto_products;

I ovenstående kode er @table_name en variabel. Hvis en værdi, der tildeles denne variabel, er “employees”, vil IF-anvisningen hente dataene fra tabellen sto_employees. Hvis værdien af variablen er en anden værdi end “employee”, bliver IF-betingelsen FALSK, og ELSE-delen udføres.

Jeg vil vise dig denne enkle anvendelse i nedenstående eksempler med output. I det sidste afsnit vil jeg også forklare, hvordan man opfylder “ELSE IF”-formålet, som ikke er tilgængeligt i SQL Server.

Et simpelt eksempel på brug af IF-angivelse uden ELSE

Lad mig starte med et simpelt eksempel på brug af IF SQL-angivelsen. Vi vil evaluere en variabel af typen int for at kontrollere dens værdi. Hvis betingelsen er TRUE, skal IF-erklæringen udskrive en erklæring.

Koden:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

/*Deklarering af en variabel*/
DECLARE @val_chk INT;
/*Tildeling af en værdi*/
SET @val_chk = 101;
/*Udførelse af IF-erklæringen*//
IF @val_chk = 101
PRINT ‘IF-erklæringen er TRUE’;
GO

Opdatet af ovenstående kode er:
Opdatet af ovenstående kode er:

“The IF statement is TRUE”

Som sådan er værdien af variablen 101.

Hvad nu hvis betingelsen var FALSK?

Hvis ovenstående betingelse var FALSK, f.eks. hvis værdien af variablen var en anden end 101, ville der ikke ske noget.

I den virkelige verden vil du måske udføre en erklæring eller udføre en handling, da betingelsen i IF-erklæringen er SAND eller FALSK.

Dertil skal du bruge ELSE-erklæringen. Anvisningen inden for ELSE-anvisningen udføres, hvis betingelsen i IF-anvisningen ikke er opfyldt.

Se en demo nedenfor af brugen af ELSE-erklæringen:

Den IF ELSE CODE:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

/*Deklarering af en variabel*/
DECLARE @val_chk INT;
/*Tildeling af en værdi*/
SET @val_chk = 50;
/*Udførelse af IF-erklæringen*//
IF @val_chk >= 101
PRINT ‘IF-erklæringen er TRUE’;
ELSE
PRINT ‘IF-erklæringen er FULDIG’;
GO

Opdatet af ovenstående kode er: “IF-erklæringen er FALSK”, da værdien af variablen ikke er større end eller lig med 101.

Udførelse af en SELECT-erklæring baseret på VARCHAR-værdi

Nu vil jeg vise et eksempel på at bruge en strengværdi i IF-erklæringen. En strengvariabel er erklæret og tildelt en værdi.

I IF…ELSE-erklæringerne kontrollerer vi værdien af variablen og udfører den respektive SELECT-erklæring. Tag et kig:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

/*Deklarering af en strengvariabel*/
DECLARE @table_name VARCHAR(60);
/*Tildeling af en værdi*/
SET @table_name = ‘medarbejdere’;
/*Udførelse af IF-erklæringen*//
IF @table_name = ‘medarbejdere’
SELECT * FROM sto_employees;
ELSE
SELECT * FROM sto_products;
GO

Opdatet af ovenstående kode er:
Opdatet af ovenstående kode er:

SQL IF ELSE

Hvad sker der, hvis vi har flere valgmuligheder, der skal kontrolleres? (NESTED IF)

I ovenstående eksempler havde vi kun to muligheder. Enten er værdien TRUE eller FALSE. Hvis det er TRUE, udføres erklæringen inden for IF’en, ellers udføres ELSE-delen.

Ved udførelse af SELECT-erklæringer, lad os sige, at vi skal kontrollere forskellige tabelnavne og udføre respektive SELECT-erklæringer for hver enkelt; hvordan kan vi så gøre det?

Svaret er at bruge NESTED IF-erklæringen.

For eksempel, hvis værdien af variablen er “medarbejdere”, skal du udføre:

SELECT * FROM sto_employees;

Hvis værdien er “products”, skal du udføre:

SELECT * FROM sto_employees;

Hvis værdien er “products”, skal du udføre:

SELECT * FROM sto_products;

For enhver anden værdi:

SELECT * FROM sto_emp_salary_paid;

Se, hvordan dette oversættes til NESTED IF statements i SQL:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

/*Angivelse af en strengvariabel*/
DECLARE @table_name VARCHAR(60);
/*Tildeling af en værdi*/
SET @table_name = ‘products’;
/*Udførelse af IF-erklæringen*//
IF @table_name = ’employees’
SELECT * FROM sto_employees;
ELSE
BEGIN
IF @table_name = ‘products’
SELECT * FROM sto_products;
ELSE
SELECT * FROM sto_emp_salary_paid;
END ;
GO

Du kan se, at der inde i ELSE-erklæringen anvendes nøgleordet BEGIN, hvor en anden IF-erklæring er placeret (den indlejrede IF). Dette afsluttes ved at bruge nøgleordet END.

Der har vi placeret endnu en betingelse, der skal kontrolleres. Prøv forskellige værdier for variablen @table_name med dine egne tabelnavne og erstat også i SELECT-erklæringen for selv at opleve det.

Går et andet niveau i NESTED IF-erklæring

Selv for at vise, at du kan neste til mange niveauer, er jeg gået videre ved at bruge en anden nested IF-erklæring.

Så, scenariet er at kontrollere værdien af en variabel (table_name). hvis værdien er products, så hent dataene fra sto_products-tabellen. Hvis værdien er medarbejdere, skal du hente registreringer fra sto_employees. Den tredje if kontrollerer, om værdien af variablen er orders, og henter derefter posterne fra tabellen orders.

Endeligt skal ELSE-erklæringen for enhver anden værdi af variablen hente posterne i tabellen medarbejderens løn udbetalt.

Se den flere indlejrede IF-erklæring for tre betingelser plus ELSE:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

/*Deklarering af en strengvariabel*/
DECLARE @table_name VARCHAR(60);
/*Tildeling af en værdi*/
SET @table_name = ‘orders’;
/*Udførelse af IF-erklæringen*//
IF @table_name = ’employees’
SELECT * FROM sto_employees;
ELSE
BEGIN
IF @table_name = ‘products’
SELECT * FROM sto_products;
ELSE
BEGIN
IF @table_name = “orders”
SELECT * FROM sto_orders;
ELSE
SELECT * FROM sto_emp_salary_paid;
END ;
END ;
GO

Som jeg indstiller værdien af variablen som ordrer, skal IF-erklæringen returnere posterne fra sto_orders-tabellen.

I koden kan du se, at den tredje IF-erklæring startes efter det andet BEGIN-keyword.

Note: Hvis du ønsker at bruge betinget udførelse i SELECT-erklæringen, skal du bruge CASE-erklæringen i SQL.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.