La instrucció IF és una part de la funció de flux de control a SQL Server. Normalment, és una declaració de presa de decisions en diversos llenguatges de programació que retorna un valor basat en les condicions donades . Aquesta instrucció executa el codi escrit al bloc IF quan la condició donada s'avalua com a vertadera i quan la condició s'avalua com a falsa, llavors s'executarà la instrucció ELSE.
La declaració IF
A continuació es mostra la sintaxi que il·lustra l'ús d'aquesta declaració a SQL Server:
IF boolean_expression BEGIN { statement_block } END
En la sintaxi anterior, el bloc_declaració en el COMENÇAR... FINALITZAR el bloc s'executa quan el expressió_booleana està satisfet amb la condició. En cas contrari, aquest bloc s'omet i el control del programa es mou a la instrucció després de FINAL paraula clau. Hem de saber que si l'expressió conté a SELECCIONA declaració, hem de fer-ho afegiu-los entre parèntesis .
Exemple
Vegem l'exemple per entendre la instrucció IF sense el bloc ELSE. L'exemple següent mostrarà el resultat quan es compleixi la condició. En cas contrari, el control del programa es va traslladar a la instrucció després de la paraula clau END, si n'hi ha.
DECLARE @Marks INT = 65 ; IF @marks >= 45 BEGIN PRINT 'Congratulations! You pass the Examination'; END
L'execució de la instrucció donarà la següent sortida:
Ara, ho demostrarem a continuació ' Estudiant' taula amb les dades següents:
El següent és un altre exemple que rep el notes totals d'un estudiant seleccionat del ' Estudiant' taula a la base de dades de mostra i després imprimeix a missatge si és superior a 400 .
BEGIN DECLARE @Total_Marks INT; SELECT @Total_Marks = total_marks FROM Student WHERE age>25; SELECT @Total_Marks; IF @Total_Marks > 400 BEGIN PRINT 'Congratulations! You pass the Examination'; END END
Tindrem la següent sortida:
Si volem veure el missatge de sortida anterior, haurem de fer clic a Missatges pestanya:
La declaració IF-ELSE
En l'escenari del món real, hem de realitzar alguna acció sempre que la condició de la instrucció IF sigui TRUE o FALSE. En aquest cas, la instrucció IF...ELSE és útil. Aquesta instrucció executa el bloc d'instruccions ELSE quan la condició de la clàusula IF s'avalua FALSE.
A continuació es mostra la sintaxi que il·lustra l'ús de la instrucció IF ELSE a SQL Server :
IF expression BEGIN Statement block -- It executes when the IF clause expression is TRUE. END ELSE BEGIN Statement block -- It executes when the IF clause expression is FALSE. END
Exemple
Vegem l'exemple per entendre la instrucció IF amb el bloc ELSE. L'exemple següent mostrarà el missatge ' Felicitats! Passeu l'examen ' quan es compleix la condició IF. En cas contrari, mostra ' Estàs fracassat! Que tingueu més sort la propera vegada '.
DECLARE @Marks INT; SET @Marks = 65; IF @marks <45 begin print 'congratulations! you pass the examination'; end else 'you are failed! better luck next time'; < pre> <p>Executing the statement will give the below output. Here, the <strong>marks</strong> variable is <strong>65</strong> , and the <strong>condition (65<45)< strong> is not satisfied. Therefore, the message inside the ELSE block is displayed:</45)<></strong></p> <img src="//techcodeview.com/img/sql-server-tutorials/49/sql-server-if-else-5.webp" alt="SQL Server IF ELSE"> <p>We will get this output because the condition <strong>(65>45)</strong> is satisfied. Therefore, the message inside the IF block is displayed:</p> <img src="//techcodeview.com/img/sql-server-tutorials/49/sql-server-if-else-6.webp" alt="SQL Server IF ELSE"> <p>Now, we will demonstrate the IF ELSE statement on the above ' <strong>Student'</strong> table. In this example, we are going to check whether the student <strong>total marks</strong> is <strong>greater than or equal to 400</strong> or not as follows:</p> <ul> <li>When the IF condition is TRUE, we will get the student records whose total marks are greater than or equal to 550.</li> <li>If the condition is FALSE, we will get the student records whose total marks are less than 550.</li> </ul> <p>Here is the program:</p> <pre> DECLARE @Marks INT; SET @Marks = 600 ; IF @Marks >= 550 BEGIN SELECT id, name, gender, age, total_marks FROM Student WHERE total_marks >= 550 ORDER BY age ASC END ELSE BEGIN SELECT id, name, gender, age, total_marks FROM Student WHERE total_marks <550 order by age asc end < pre> <p>In this code, we have specified the <strong>@Marks</strong> variable to <strong>600</strong> , and the condition (600 >= 550) is satisfied. Therefore, we will get the output where student records whose total marks are greater than or equal to 550 are displayed.</p> <img src="//techcodeview.com/img/sql-server-tutorials/49/sql-server-if-else-7.webp" alt="SQL Server IF ELSE"> <p>If we changed the <strong>@Marks</strong> variable to <strong>500</strong> and the condition (500 >= 550) becomes false. Therefore, we will get the output where student records whose total marks are less than 550 are displayed.</p> <img src="//techcodeview.com/img/sql-server-tutorials/49/sql-server-if-else-8.webp" alt="SQL Server IF ELSE"> <h2>Nested IF ELSE Statement</h2> <p>Unlike other programming languages, we can nest an IF...ELSE statement inside another IF...ELSE statement in SQL Server. Let us demonstrate it with the following example:</p> <pre> DECLARE @age INT; SET @age = 6; IF @age <18 50 print 'you are underage'; else begin if @age < below 50'; senior cetizen'; end; pre> <p>In this example, we are going to check whether the <strong>age is underage, below 50, or senior citizen</strong> as follows:</p> <ul> <li>If the value of the <strong>@age</strong> variable is below <strong>18</strong> , it will print the person is <strong>underage</strong> .</li> <li>If the condition is FALSE, the ELSE part will be executed that has a nested IF…ELSE.</li> <li>If the value of the <strong>@age</strong> variable is under <strong>50</strong> , it will print <strong>below 50</strong> . Finally, if no condition is satisfied, it will print <strong>senior citizens</strong> .</li> </ul> <p>Here is the result:</p> <img src="//techcodeview.com/img/sql-server-tutorials/49/sql-server-if-else-9.webp" alt="SQL Server IF ELSE"> <p>This article gives a complete overview of how to use the SQL Server IF ELSE statement. Here we have learned:</p> <ul> <li>Variables are objects that serve as placeholders.</li> <li>The keyword BEGIN will be used to start a statement block, and the END keyword must be used to close it.</li> <li>The use of ELSE in an IF... ELSE statement is optional.</li> <li>It's also possible to nest an IF...ELSE statement inside another IF...ELSE statement. However, nesting an IF statement within another statement is bad practice because it makes the code difficult to read and maintain.</li> </ul> <hr></18></pre></550></pre></45>550>45>