The CASE on lauseke, joka käyttää if-then-else-tyyppisiä loogisia kyselyitä. Tämä lauseke palauttaa arvon, kun määritetyn ehdon arvo on tosi. Kun mikään ehto ei anna arvoa Tosi, se palauttaa ELSE-osan arvon.
java swing
Kun ELSE-osaa ei ole eikä mikään ehto anna arvoa Tosi, se palauttaa NULL-arvon.
Strukturoidussa kyselykielessä CASE-käskyä käytetään SELECT-, INSERT- ja DELETE-käskyissä seuraavilla kolmella lauseella:
- WHERE-lauseke
- TILAA lausekkeen mukaan
- GROUP BY Clause
Tätä SQL-käskyä seuraa aina vähintään yksi WHEN- ja THEN-käskypari, ja se päättyy aina END-avainsanalla.
CASE-käskyä on kahdenlaisia relaatiotietokannoista:
- Yksinkertainen CASE-lauseke
- Haettiin CASE-lausuntoa
CASE-käskyn syntaksi SQL:ssä
CASE WHEN condition_1 THEN statement_1 WHEN condition_2 THEN statement_2 ……. WHEN condition_N THEN statement_N ELSE result END;
Tässä CASE-käsky arvioi jokaisen ehdon yksitellen.
Jos lauseke vastaa ensimmäisen WHEN-lauseen ehtoa, se ohittaa kaikki muut WHEN- ja THEN-ehdot ja palauttaa tuloksessa lausekkeen_1.
Jos lauseke ei vastaa ensimmäistä WHEN-ehtoa, sitä verrataan sekuntia WHEN-ehtoon. Tämä sovitusprosessi jatkuu, kunnes lauseke on sovitettu mihin tahansa WHEN-ehtoon.
Jos lauseketta ei täsmää, ohjausobjekti siirtyy automaattisesti ELSE-osaan ja palauttaa tuloksensa. CASE-syntaksissa ELSE-osa on valinnainen.
Syntaksissa CASE ja END ovat tärkeimmät avainsanat, jotka osoittavat CASE-käskyn alun ja sulkemisen.
lista lajiteltu java
Esimerkkejä CASE-käskystä SQL:ssä
Otetaan taulukko Student_Details, joka sisältää roll_no, nimen, pisteet, aiheen ja opiskelijoiden kaupungin.
Roll_No | Stu_Name | Stu_Subject | Stu_Marks | Stu_City |
---|---|---|---|---|
2001 | Akshay | Tiede | 92 | Noida |
2002 | RAM | Matematiikka | 49 | Jaipur |
2004 | Shyam | Englanti | 52 | Gurgaon |
2005 | yatin | Ei | Neljä viisi | Lucknow |
2006 | Manoj | Tietokone | 70 | Ghaziabad |
2007 | Sheetal | Matematiikka | 82 | Noida |
2008 | Hiukset | Tiede | 62 | Gurgaon |
2009 | Yogesh | Englanti | 42 | Lucknow |
2010 | RAM | Tietokone | 88 | Delhi |
2011 | Shyam | Ei | 35 | Kanpur |
Esimerkki 1: Seuraava SQL-käsky käyttää yhtä WHEN- ja THEN-ehtoa CASE-käskyssä:
SELECT Roll_No, Stu_Name, Stu_Subject, Stu_marks, CASE WHEN Stu_Marks >= 50 THEN 'Student_Passed' ELSE 'Student_Failed' END AS Student_Result FROM Student_Details;
Selitys yllä olevaan kyselyyn:
Tässä CASE-lauseke tarkistaa, että jos Stu_Marks on suurempi ja yhtä suuri kuin 50, se palauttaa Opiskelija_hyväksytty muutoin siirtyy MUU osa ja palautukset Opiskelija_Epäonnistui in Opiskelija_tulos sarakkeessa.
Lähtö:
Roll_No | Stu_Name | Stu_Subject | Stu_Marks | Opiskelija_tulos |
---|---|---|---|---|
2001 | Akshay | Tiede | 92 | Opiskelija_hyväksytty |
2002 | RAM | Matematiikka | 49 | Opiskelija_Epäonnistui |
2004 | Shyam | Englanti | 52 | Opiskelija_hyväksytty |
2005 | yatin | Ei | Neljä viisi | Opiskelija_Epäonnistui |
2006 | Manoj | Tietokone | 70 | Opiskelija_hyväksytty |
2007 | Sheetal | Matematiikka | 82 | Opiskelija_hyväksytty |
2008 | Hiukset | Tiede | 62 | Opiskelija_hyväksytty |
2009 | Yogesh | Englanti | 42 | Opiskelija_Epäonnistui |
2010 | RAM | Tietokone | 88 | Opiskelija_hyväksytty |
2011 | Shyam | Ei | 35 | Opiskelija_Epäonnistui |
Esimerkki 2: Seuraava SQL-käsky lisää CASE-käskyyn useamman kuin yhden WHEN- ja THEN-ehdon:
SELECT Roll_No, Stu_Name, Stu_Subject, Stu_marks, CASE WHEN Stu_Marks >= 90 THEN 'Outstanding' WHEN Stu_Marks >= 80 AND Stu_Marks = 70 AND Stu_Marks = 60 AND Stu_Marks = 50 AND Stu_Marks <60 50 then 'bad' when stu_marks < 'failed' end as stu_remarks from student_details; pre> <p> <strong>Explanation of above query:</strong> </p> <p>Here, the CASE statement checks multiple WHEN and THEN conditions one by one. If the value of <strong>Stu_Marks</strong> column is greater than or equals to <strong>90</strong> , it returns <strong>Outstanding</strong> otherwise moves to the further WHEN and THEN conditions.</p> <p>If none of the conditions is matched with the <strong>Student_Details</strong> table, CASE returns <strong>the NULL</strong> value in the <strong>Stu_Remarks</strong> column because there is no ELSE part in the query.</p> <p> <strong>Output:</strong> </p> <table class="table"> <tr> <th>Roll_No</th> <th>Stu_Name</th> <th>Stu_Subject</th> <th>Stu_Marks</th> <th>Stu_Remarks</th> </tr> <tr> <td>2001</td> <td>Akshay</td> <td>Science</td> <td>92</td> <td>Outstanding</td> </tr> <tr> <td>2002</td> <td>Ram Math</td> <td>49</td> <td>Failed</td> </tr> <tr> <td>2004</td> <td>Shyam</td> <td>English</td> <td>52</td> <td>Bad</td> </tr> <tr> <td>2005</td> <td>Yatin</td> <td>Hindi</td> <td>45</td> <td>Failed</td> </tr> <tr> <td>2006</td> <td>Manoj</td> <td>Computer</td> <td>70</td> <td>Good</td> </tr> <tr> <td>2007</td> <td>Sheetal</td> <td>Math</td> <td>82</td> <td>Excellent</td> </tr> <tr> <td>2008</td> <td>Parul</td> <td>Science</td> <td>62</td> <td>Average</td> </tr> <tr> <td>2009</td> <td>Yogesh</td> <td>English</td> <td>42</td> <td>Failed</td> </tr> <tr> <td>2010</td> <td>Ram</td> <td>Computer</td> <td>88</td> <td>Excellent</td> </tr> <tr> <td>2011</td> <td>Shyam</td> <td>Hindi</td> <td>35</td> <td>Failed</td> </tr> </table> <p> <strong>Example 3:</strong> </p> <p>Let's take another Employee_Details table which contains Emp_ID, Emp_Name, Emp_Dept, and Emp_Salary.</p> <table class="table"> <tr> <th>Emp_Id</th> <th>Emp_Name</th> <th>Emp_Dept</th> <th>Emp_Salary</th> </tr> <tr> <td>1</td> <td>Akshay</td> <td>Finance</td> <td>9000</td> </tr> <tr> <td>2</td> <td>Ram</td> <td>Marketing</td> <td>4000</td> </tr> <tr> <td>3</td> <td>Shyam</td> <td>Sales</td> <td>5000</td> </tr> <tr> <td>4</td> <td>Yatin</td> <td>Coding</td> <td>4000</td> </tr> <tr> <td>5</td> <td>Manoj</td> <td>Marketing</td> <td>5000</td> </tr> <tr> <td>1</td> <td>Akshay</td> <td>Finance</td> <td>8000</td> </tr> <tr> <td>2</td> <td>Ram</td> <td>Coding</td> <td>6000</td> </tr> <tr> <td>3</td> <td>Shyam</td> <td>Coding</td> <td>4000</td> </tr> <tr> <td>4</td> <td>Yatin</td> <td>Marketing</td> <td>8000</td> </tr> <tr> <td>5</td> <td>Manoj</td> <td>Finance</td> <td>3000</td> </tr> </table> <p> <strong>The following SQL query uses GROUP BY clause with CASE statement:</strong> </p> <pre> SELECT Emp_Id, Emp_Name, Emp_Dept, sum(Emp_Salary) as Total_Salary, CASE WHEN SUM(Emp_Salary) >= 10000 THEN 'Increment' ELSE 'Constant' END AS Emp_Remarks FROM Employee_Details GROUP BY Emp_id, Emp_Name; </pre> <p> <strong>Output:</strong> </p> <table class="table"> <tr> <th>Emp_Id</th> <th>Emp_Name</th> <th>Emp_Dept</th> <th>Total_Salary</th> <th>Emp_Remarks</th> </tr> <tr> <td>1</td> <td>Akshay</td> <td>Finance</td> <td>17000</td> <td>Increment</td> </tr> <tr> <td>2</td> <td>Ram</td> <td>Marketing</td> <td>9000</td> <td>Decrement</td> </tr> <tr> <td>3</td> <td>Shyam</td> <td>Sales</td> <td>10000</td> <td>Increment</td> </tr> <tr> <td>4</td> <td>Yatin</td> <td>Coding</td> <td>12000</td> <td>Increment</td> </tr> <tr> <td>5</td> <td>Manoj</td> <td>Marketing</td> <td>8000</td> <td>Decrement</td> </tr> </table> <p> <strong>Example 4: In this example, we use the ORDER BY clause with a CASE statement in SQL:</strong> </p> <p>Let's take another Employee_Details table which contains Emp_ID, Emp_Name, Emp_Dept, and Emp_Age.</p> <p>We can check the data of Employee_Details by using the following query in SQL:</p> <pre> Select * From Employee_Details; </pre> <p> <strong>Output:</strong> </p> <table class="table"> <tr> <th>Emp_Id</th> <th>Emp_Name</th> <th>Emp_Dept</th> <th>Emp_Age</th> </tr> <tr> <td>1</td> <td>Akshay</td> <td>Finance</td> <td>23</td> </tr> <tr> <td>2</td> <td>Ram</td> <td>Marketing</td> <td>24</td> </tr> <tr> <td>3</td> <td>Balram</td> <td>Sales</td> <td>25</td> </tr> <tr> <td>4</td> <td>Yatin</td> <td>Coding</td> <td>22</td> </tr> <tr> <td>5</td> <td>Manoj</td> <td>Marketing</td> <td>23</td> </tr> <tr> <td>6</td> <td>Sheetal</td> <td>Finance</td> <td>24</td> </tr> <tr> <td>7</td> <td>Parul</td> <td>Finance</td> <td>22</td> </tr> <tr> <td>8</td> <td>Yogesh</td> <td>Coding</td> <td>25</td> </tr> <tr> <td>9</td> <td>Naveen</td> <td>Marketing</td> <td>22</td> </tr> <tr> <td>10</td> <td>Tarun</td> <td>Finance</td> <td>23</td> </tr> </table> <p>The following SQL query shows all the details of employees in the ascending order of employee names:</p> <pre> SELECT * FROM Employee_Details ORDER BY Emp_Name; </pre> <p> <strong>Output:</strong> </p> <table class="table"> <tr> <th>Emp_Id</th> <th>Emp_Name</th> <th>Emp_Dept</th> <th>Emp_Age</th> </tr> <tr> <td>1</td> <td>Akshay</td> <td>Finance</td> <td>23</td> </tr> <tr> <td>3</td> <td>Balram</td> <td>Sales</td> <td>25</td> </tr> <tr> <td>5</td> <td>Manoj</td> <td>Marketing</td> <td>23</td> </tr> <tr> <td>9</td> <td>Naveen</td> <td>Marketing</td> <td>22</td> </tr> <tr> <td>7</td> <td>Parul</td> <td>Finance</td> <td>22</td> </tr> <tr> <td>2</td> <td>Ram</td> <td>Marketing</td> <td>24</td> </tr> <tr> <td>6</td> <td>Sheetal</td> <td>Finance</td> <td>24</td> </tr> <tr> <td>10</td> <td>Tarun</td> <td>Finance</td> <td>23</td> </tr> <tr> <td>4</td> <td>Yatin</td> <td>Coding</td> <td>22</td> </tr> <tr> <td>8</td> <td>Yogesh</td> <td>Coding</td> <td>25</td> </tr> </table> <p>If you want to show those employees at the top who work in the Coding Department, then for this operation, you have to use single WHEN and THEN statement in the CASE statement as shown in the following query:</p> <pre> SELECT * FROM Employee_Details ORDER BY CASE WHEN Emp_Dept = 'Coding' THEN 0 ELSE 1 END, Emp_Name; </pre> <p> <strong>Output:</strong> </p> <table class="table"> <tr> <th>Emp_Id</th> <th>Emp_Name</th> <th>Emp_Dept</th> <th>Emp_Age</th> </tr> <tr> <td>4</td> <td>Yatin</td> <td>Coding</td> <td>22</td> </tr> <tr> <td>8</td> <td>Yogesh</td> <td>Coding</td> <td>25</td> </tr> <tr> <td>1</td> <td>Akshay</td> <td>Finance</td> <td>23</td> </tr> <tr> <td>3</td> <td>Balram</td> <td>Sales</td> <td>25</td> </tr> <tr> <td>5</td> <td>Manoj</td> <td>Marketing</td> <td>23</td> </tr> <tr> <td>9</td> <td>Naveen</td> <td>Marketing</td> <td>22</td> </tr> <tr> <td>7</td> <td>Parul</td> <td>Finance</td> <td>22</td> </tr> <tr> <td>2</td> <td>Ram</td> <td>Marketing</td> <td>24</td> </tr> <tr> <td>6</td> <td>Sheetal</td> <td>Finance</td> <td>24</td> </tr> <tr> <td>10</td> <td>Tarun</td> <td>Finance</td> <td>23</td> </tr> </table> <hr></60>
Lähtö:
Emp_Id | Emp_Name | Emp_Dept | Yhteensä_Palkka | Emp_Remarks |
---|---|---|---|---|
1 | Akshay | Rahoittaa | 17 000 | Lisäys |
2 | RAM | Markkinointi | 9000 | Vähennys |
3 | Shyam | Myynti | 10 000 | Lisäys |
4 | yatin | Koodaus | 12 000 | Lisäys |
5 | Manoj | Markkinointi | 8000 | Vähennys |
Esimerkki 4: Tässä esimerkissä käytämme ORDER BY -lausetta CASE-käskyn kanssa SQL:ssä:
Otetaan toinen Employee_Details-taulukko, joka sisältää Emp_ID, Emp_Name, Emp_Dept ja Emp_Age.
Voimme tarkistaa Employee_Details-tiedot käyttämällä seuraavaa SQL-kyselyä:
dhl merkitys
Select * From Employee_Details;
Lähtö:
Emp_Id | Emp_Name | Emp_Dept | Emp_Age |
---|---|---|---|
1 | Akshay | Rahoittaa | 23 |
2 | RAM | Markkinointi | 24 |
3 | Balram | Myynti | 25 |
4 | yatin | Koodaus | 22 |
5 | Manoj | Markkinointi | 23 |
6 | Sheetal | Rahoittaa | 24 |
7 | Hiukset | Rahoittaa | 22 |
8 | Yogesh | Koodaus | 25 |
9 | Naveen | Markkinointi | 22 |
10 | Tarun | Rahoittaa | 23 |
Seuraava SQL-kysely näyttää kaikki työntekijöiden tiedot työntekijöiden nimien nousevassa järjestyksessä:
SELECT * FROM Employee_Details ORDER BY Emp_Name;
Lähtö:
Emp_Id | Emp_Name | Emp_Dept | Emp_Age |
---|---|---|---|
1 | Akshay | Rahoittaa | 23 |
3 | Balram | Myynti | 25 |
5 | Manoj | Markkinointi | 23 |
9 | Naveen | Markkinointi | 22 |
7 | Hiukset | Rahoittaa | 22 |
2 | RAM | Markkinointi | 24 |
6 | Sheetal | Rahoittaa | 24 |
10 | Tarun | Rahoittaa | 23 |
4 | yatin | Koodaus | 22 |
8 | Yogesh | Koodaus | 25 |
Jos haluat näyttää yläosassa olevat koodausosastolla työskentelevät työntekijät, sinun on käytettävä tätä toimintoa varten yhtä WHEN- ja THEN-käskyä CASE-käskyssä seuraavan kyselyn mukaisesti:
SELECT * FROM Employee_Details ORDER BY CASE WHEN Emp_Dept = 'Coding' THEN 0 ELSE 1 END, Emp_Name;
Lähtö:
Emp_Id | Emp_Name | Emp_Dept | Emp_Age |
---|---|---|---|
4 | yatin | Koodaus | 22 |
8 | Yogesh | Koodaus | 25 |
1 | Akshay | Rahoittaa | 23 |
3 | Balram | Myynti | 25 |
5 | Manoj | Markkinointi | 23 |
9 | Naveen | Markkinointi | 22 |
7 | Hiukset | Rahoittaa | 22 |
2 | RAM | Markkinointi | 24 |
6 | Sheetal | Rahoittaa | 24 |
10 | Tarun | Rahoittaa | 23 |
60>