Sledijo pogojni izrazi v SQL
- Izraz CASE: omogoča uporabo stavkov IF-THEN-ELSE, ne da bi morali priklicati procedure.
-
Input: SELECT GREATEST('XYZ', 'xyz') from dual;>Output: GREATEST('XYZ', 'xyz') xyz>Pojasnilo: ASCII vrednost malih abeced je večja.
-
Input: SELECT GREATEST('XYZ', null, 'xyz') from dual; Output: GREATEST('XYZ', null, 'xyz') ->Pojasnilo: Ker je null prisoten, bo null prikazan kot izhod (kot je omenjeno v zgornjem opisu).
-
Input: SELECT IFNULL(1,0) FROM dual;>
Output: - 1>
Pojasnilo: Ker noben izraz ni nič.
-
Input: SELECT IFNULL(NULL,10) FROM dual; Output: -- 10>
Pojasnilo: Ker je izraz1 enak nič, se prikaže izraz2.
-
strong>Vnos: IZBERI NAJMANJ('XYZ', 'xyz') iz dvojnega; Izhod: NAJMANJ('XYZ', 'xyz') XYZ>Pojasnilo: ASCII vrednost velikih črk je manjša.
-
Input: SELECT LEAST('XYZ', null, 'xyz') from dual; Output: LEAST('XYZ', null, 'xyz') ->Pojasnilo: Ker je null prisoten, bo null prikazan kot izhod (kot je omenjeno v zgornjem opisu).
V preprostem izrazu CASE SQL išče prvi par WHEN……THEN, za katerega je izraz enak primerjalnemu_izrazu, in vrne return_expr. Če zgornji pogoj ni izpolnjen, obstaja klavzula ELSE, SQL vrne else_expr. V nasprotnem primeru vrne NULL.
Za return_expr in else_expr ne moremo določiti dobesedne ničelne vrednosti. Vsi izrazi (izraz, primerjalni_izraz, povratni_izraz) morajo biti istega podatkovnega tipa.
Sintaksa:
CASE expr WHEN comparison_expr1 THEN return_expr1 [ WHEN comparison_expr2 THEN return_expr2 . . . WHEN comparison_exprn THEN return_exprn ELSE else_expr] END>
primer:
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;>
Izhod:

Pojasnilo : V zgornjih stavkih SQL je vrednost department_id dekodirana. Če je 50, potem se plača 1,5-kratnik, če je 12, potem se plača 2-kratnik, drugače ni spremembe plače. Funkcija DECODE : olajša pogojne poizvedbe z opravljanjem dela stavka CASE ali IF-THEN-ELSE.
Funkcija DECODE dekodira izraz na podoben način kot logika IF-THEN-ELSE, ki se uporablja v različnih jezikih. Funkcija DECODE dekodira izraz, potem ko ga primerja z vsako iskalno vrednostjo. Če je izraz enak iskanju, se vrne rezultat.
Če je privzeta vrednost izpuščena, je vrnjena ničelna vrednost, če se iskalna vrednost ne ujema z nobeno vrednostjo rezultata.
Sintaksa:
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;>
Izhod:
Pojasnilo: V zgornjih stavkih SQL se testira vrednost department_id. Če je 50, potem se plača 1,5-kratnik, če je 12, potem se plača 2-kratnik, drugače ni spremembe plače.
OPOMBA: Enako kot izrazi CASE tudi COALESCE ne bo ovrednotil argumentov desno od prvega najdenega neničelnega argumenta.
Sintaksa:
COALESCE( value [, ......] )>
Input: SELECT COALESCE(last_name, '- NA -') from Employee;>
Izhod:
Pojasnilo: - NA - bo prikazano na mestu, kjer je priimek null, sicer bodo prikazani ustrezni priimki. NAJVEČJI: Vrne največjo vrednost s seznama poljubnega števila izrazov. Primerjava je občutljiva na velike in male črke. Če podatkovni tipi vseh izrazov na seznamu niso enaki, se ostali vsi izrazi pretvorijo v podatkovni tip prvega izraza za primerjavo in če ta pretvorba ni mogoča, bo SQL vrgel napako.
OPOMBA: Vrne ničelno vrednost, če je kateri koli izraz na seznamu ničelni.
Sintaksa:
GREATEST( expr1, expr2 [, .....] )>
Sintaksa:
IFNULL( expr1, expr2 )>
OPOMBA: Enako kot izraza CASE in COALESCE tudi IN ne bo ovrednotil argumentov desno od prvega najdenega neničelnega argumenta.
Sintaksa:
WHERE column IN ( x1, x2, x3 [,......] )>
Input: SELECT * from Employee WHERE department_id IN(50, 12);>
Izhod:

Pojasnilo: Vsi podatki Zaposlenih so prikazani z ID oddelka 50 ali 12.
NAJMANJ: vrne najmanjšo vrednost s seznama poljubnega števila izrazov. Primerjava je občutljiva na velike in male črke. Če podatkovni tipi vseh izrazov na seznamu niso enaki, se ostali vsi izrazi pretvorijo v podatkovni tip prvega izraza za primerjavo in če ta pretvorba ni mogoča, bo SQL vrgel napako.OPOMBA: vrne null, če je kateri koli izraz na seznamu ničelni.
Sintaksa:
LEAST( expr1, expr2 [, ......] )>
Sintaksa:
NULLIF( value1, value2 )>
primer:
Input: SELECT NULLIF(9995463931, contact_num) from Employee;>
Izhod:

Pojasnilo: Za zaposlenega, katerega številka se ujema z dano številko, se prikaže NULL. Za ostale zaposlene je vrnjena vrednost1.