Seuraavat ovat SQL:n ehdolliset lausekkeet
- CASE-lauseke: Voit käyttää IF-THEN-ELSE-lauseita ilman, että sinun tarvitsee kutsua toimenpiteitä.
-
Input: SELECT GREATEST('XYZ', 'xyz') from dual;>Output: GREATEST('XYZ', 'xyz') xyz>Selitys: Pienten aakkosten ASCII-arvo on suurempi.
-
Input: SELECT GREATEST('XYZ', null, 'xyz') from dual; Output: GREATEST('XYZ', null, 'xyz') ->Selitys: Koska null on läsnä, null näytetään lähtönä (kuten yllä olevassa kuvauksessa mainittiin).
-
Input: SELECT IFNULL(1,0) FROM dual;>
Output: - 1>
Selitys : Koska mikään lauseke ei ole nolla.
-
Input: SELECT IFNULL(NULL,10) FROM dual; Output: -- 10>
Selitys: Koska lauseke1 on nolla, niin lause2 näytetään.
-
strong>Syöte: SELECT LAST('XYZ', 'xyz') dualista; Lähtö: LEAST('XYZ', 'xyz') XYZ>>Selitys: Isojen aakkosten ASCII-arvo on pienempi.
-
Selitys: Koska null on läsnä, null näytetään lähtönä (kuten yllä olevassa kuvauksessa mainittiin).
Yksinkertaisessa CASE-lausekkeessa SQL etsii ensimmäistä WHEN……THEN-paria, jonka lauseke on yhtä suuri kuin vertailu_lause, ja palauttaa palautuslausekkeen. Jos yllä oleva ehto ei täyty, ELSE-lause on olemassa, SQL palauttaa else_expr. Muussa tapauksessa palauttaa NULL.
Emme voi määrittää kirjaimellista tyhjää arvoille return_expr ja else_expr. Kaikkien lausekkeiden (laus, vertailu_lause, paluulause) on oltava samaa tietotyyppiä.
Syntaksi:
CASE expr WHEN comparison_expr1 THEN return_expr1 [ WHEN comparison_expr2 THEN return_expr2 . . . WHEN comparison_exprn THEN return_exprn ELSE else_expr] END>
Esimerkki:
Input : SELECT first_name, department_id, salary, CASE department_id WHEN 50 THEN 1.5*salary WHEN 12 THEN 2.0*salary ELSE salary END 'REVISED SALARY' FROM Employee;>
Lähtö:

Selitys : Yllä olevissa SQL-käskyissä osaston_id:n arvo puretaan. Jos se on 50, niin palkka maksetaan 1,5 kertaa, jos se on 12, niin palkka maksetaan 2 kertaa, muuten palkka ei muutu. DECODE-toiminto: Helpottaa ehdollisia kyselyjä tekemällä CASE- tai IF-THEN-ELSE-lauseen työn.
DECODE-funktio purkaa lausekkeen samalla tavalla kuin eri kielissä käytetty JOS-SIIN-ELSE-logiikka. DECODE-funktio purkaa lausekkeen sen jälkeen, kun sitä on verrattu kuhunkin hakuarvoon. Jos lauseke on sama kuin haku, tulos palautetaan.
Jos oletusarvo jätetään pois, palautetaan tyhjä arvo, jos hakuarvo ei vastaa mitään tulosarvoista.
Syntaksi:
DECODE (col/expression, search1, result1 [, search2, result2,........,] [, default])>
Input : SELECT first_name, department_id, salary, DECODE(department_id, 50, 1.5*salary, 12, 2.0*salary, salary) 'REVISED SALARY' FROM Employee;>
Lähtö:
Selitys: Yllä olevissa SQL-käskyissä testataan osaston_id:n arvo. Jos se on 50, niin palkka maksetaan 1,5 kertaa, jos se on 12, niin palkka maksetaan 2 kertaa, muuten palkka ei muutu.
HUOMAA: Samoin kuin CASE-lausekkeet, COALESCE ei myöskään arvioi argumentteja ensimmäisen löydetyn ei-nolla-argumentin oikealla puolella.
Syntaksi:
COALESCE( value [, ......] )>
Input: SELECT COALESCE(last_name, '- NA -') from Employee;>
Lähtö:
Selitys: - NA - näytetään paikassa, jossa sukunimi on tyhjä, muuten vastaavat sukunimet näytetään. SUURIN: Palauttaa suurimman arvon minkä tahansa lausekemäärän luettelosta. Vertailussa isot ja pienet kirjaimet otetaan huomioon. Jos luettelon kaikkien lausekkeiden tietotyypit eivät ole samat, loput kaikki lausekkeet muunnetaan vertailua varten ensimmäisen lausekkeen tietotyypeiksi ja jos tämä muunnos ei ole mahdollista, SQL antaa virheen.
HUOMAUTUS: Palauttaa nollan, jos jokin luettelon lauseke on tyhjä.
Syntaksi:
GREATEST( expr1, expr2 [, .....] )>
Syntaksi:
IFNULL( expr1, expr2 )>
HUOMAA: Sama kuin CASE- ja COALESCE-lausekkeet, IN ei myöskään arvioi argumentteja ensimmäisen löydetyn ei-nolla-argumentin oikealla puolella.
Syntaksi:
WHERE column IN ( x1, x2, x3 [,......] )>
Input: SELECT * from Employee WHERE department_id IN(50, 12);>
Lähtö:

Selitys: Kaikki työntekijätiedot näytetään osastotunnuksella 50 tai 12.
LAST: Palauttaa pienimmän arvon minkä tahansa lausekemäärän luettelosta. Vertailussa isot ja pienet kirjaimet otetaan huomioon. Jos luettelon kaikkien lausekkeiden tietotyypit eivät ole samat, loput kaikki lausekkeet muunnetaan vertailua varten ensimmäisen lausekkeen tietotyypeiksi ja jos tämä muunnos ei ole mahdollista, SQL antaa virheen.HUOMAUTUS: Palauttaa nollan, jos jokin luettelon lauseke on tyhjä.
Syntaksi:
LEAST( expr1, expr2 [, ......] )>
Syntaksi:
NULLIF( value1, value2 )>
Esimerkki:
Input: SELECT NULLIF(9995463931, contact_num) from Employee;>
Lähtö:

Selitys: NULL näkyy työntekijälle, jonka numero vastaa annettua numeroa. Muille työntekijöille palautetaan arvo1.