logo

SQL | Sąlyginės išraiškos

Toliau pateikiamos sąlyginės išraiškos SQL

    CASE išraiška: leidžia naudoti IF-THEN-ELSE sakinius, nereikalaujant procedūrų.
    Paprastoje CASE išraiškoje SQL ieško pirmosios WHEN……THEN poros, kurios išraiška yra lygi palyginimo_išreikšm ir grąžina return_expr. Jei aukščiau nurodyta sąlyga netenkinama, yra ELSE sąlyga, SQL grąžina else_expr. Kitu atveju grąžina NULL.
    Negalime nurodyti pažodinio nulio, skirto return_expr ir else_expr. Visos išraiškos (išreikšm., palyginimo_išreikšm., grąžos_išreikšm.) turi būti to paties duomenų tipo.
    Sintaksė:



     CASE expr WHEN comparison_expr1 THEN return_expr1 [ WHEN comparison_expr2 THEN return_expr2 . . . WHEN comparison_exprn THEN return_exprn ELSE else_expr] END>

    Pavyzdys:

       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;>

      Išvestis:

    Paaiškinimas : Aukščiau pateiktuose SQL sakiniuose departamento_id reikšmė dekoduojama. Jei 50, tai atlyginimas mokamas 1,5 karto, jei 12, tada atlyginimas mokamas 2 kartus, kitaip atlyginimas nesikeičia. Funkcija DECODE: palengvina sąlyginius užklausas, atliekant CASE arba IF-THEN-ELSE teiginį.
    Funkcija DECODE dekoduoja išraišką panašiai kaip IF-THEN-ELSE logika, naudojama įvairiose kalbose. Funkcija DECODE iššifruoja išraišką, palyginusi ją su kiekviena paieškos reikšme. Jei išraiška yra tokia pati kaip paieškos, pateikiamas rezultatas.
    Jei numatytoji reikšmė praleista, grąžinama nulinė reikšmė, kai paieškos reikšmė neatitinka nė vienos iš rezultatų reikšmių.
    Sintaksė:



    bfs paieška
     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;>

    Išvestis:

    Paaiškinimas: Aukščiau pateiktuose SQL sakiniuose tikrinama departamento_id reikšmė. Jei 50, tai atlyginimas mokamas 1,5 karto, jei 12, tai atlyginimas mokamas 2 kartus, kitaip atlyginimas nesikeičia.

    COALESCE : grąžina pirmąjį argumentą, kuris nėra nulis. Nulis grąžinamas tik tuo atveju, jei visi argumentai yra nuliniai. Jis dažnai naudojamas nulinėms reikšmėms pakeisti numatytąją reikšmę, kai gaunami duomenys rodyti.
    PASTABA: kaip ir CASE išraiškos, COALESCE taip pat neįvertins argumentų, esančių dešinėje nuo pirmojo rasto argumento, kuris nėra nulis.
    Sintaksė:

     COALESCE( value [, ......] )>
     Input: SELECT COALESCE(last_name, '- NA -') from Employee;>

    Išvestis:

    Paaiškinimas: - NA - bus rodomas toje vietoje, kur pavardė yra nulinė, kitu atveju bus rodomos atitinkamos pavardės. GREATEST: grąžina didžiausią reikšmę iš bet kokio skaičiaus išraiškų sąrašo. Palyginimui skiriamos didžiosios ir mažosios raidės. Jei visų sąraše esančių išraiškų duomenų tipai nėra vienodi, visos likusios išraiškos konvertuojamos į pirmosios išraiškos duomenų tipą, kad būtų galima palyginti, ir jei šis konvertavimas neįmanomas, SQL parodys klaidą.
    PASTABA: Grąžina nulį, jei bet kuri sąrašo išraiška yra nulinė.
    Sintaksė:



     GREATEST( expr1, expr2 [, .....] )>
    •  Input: SELECT GREATEST('XYZ', 'xyz') from dual;>
       Output: GREATEST('XYZ', 'xyz') xyz>

      Paaiškinimas: Mažų abėcėlių ASCII reikšmė yra didesnė.

    •  Input: SELECT GREATEST('XYZ', null, 'xyz') from dual; Output: GREATEST('XYZ', null, 'xyz') ->

      Paaiškinimas: Kadangi yra nulis, tai nulis bus rodomas kaip išvestis (kaip minėta aukščiau esančiame aprašyme).

    IFNULL: jei expr1 nėra NULL, grąžina expr1; kitu atveju jis grąžina expr2. Grąžina skaitinę arba eilutės reikšmę, atsižvelgiant į kontekstą, kuriame ji naudojama.
    Sintaksė:

    java int į dvigubą
     IFNULL( expr1, expr2 )>
    •  Input: SELECT IFNULL(1,0) FROM dual;>
       Output: - 1>

      Paaiškinimas: Kadangi jokia išraiška nėra nulinė.

    •  Input: SELECT IFNULL(NULL,10) FROM dual; Output: -- 10>

      Paaiškinimas: Kadangi expr1 yra nulinis, tai rodomas expr2.

    IN: patikrina, ar reikšmė yra reikšmių rinkinyje ir gali būti naudojama su WHERE, CHECK ir rodinių kūrimu.
    PASTABA: kaip ir CASE ir COALESCE išraiškos, IN taip pat neįvertins argumentų, esančių dešinėje nuo pirmojo rasto argumento, kuris nėra nulis.
    Sintaksė:

     WHERE column IN ( x1, x2, x3 [,......] )>
     Input: SELECT * from Employee WHERE department_id IN(50, 12);>

    Išvestis:

    Paaiškinimas: Visi Darbuotojų duomenys rodomi su skyriaus ID 50 arba 12.

    ciklas java
    MAŽIAUSIA: grąžina mažiausią reikšmę iš bet kokio skaičiaus išraiškų sąrašo. Palyginimui skiriamos didžiosios ir mažosios raidės. Jei visų sąraše esančių išraiškų duomenų tipai nėra vienodi, visos likusios išraiškos konvertuojamos į pirmosios išraiškos duomenų tipą, kad būtų galima palyginti, ir jei šis konvertavimas neįmanomas, SQL parodys klaidą.
    PASTABA: Grąžina nulį, jei bet kuri sąrašo išraiška yra nulinė.

    Sintaksė:

     LEAST( expr1, expr2 [, ......] )>
    •  strong>Įvestis: SELECT LAST('XYZ', 'xyz') iš dual; Išvestis: LEAST('XYZ', 'xyz') XYZ>> 

      Paaiškinimas: Didžiosios abėcėlės ASCII reikšmė yra mažesnė.

    • Paaiškinimas: Kadangi yra nulis, tai nulis bus rodomas kaip išvestis (kaip minėta aukščiau esančiame aprašyme).

    NULLIF: grąžina nulinę reikšmę, jei vertė1 = vertė2, kitu atveju grąžina reikšmę1.
    Sintaksė:

     NULLIF( value1, value2 )>

    Pavyzdys:

     Input: SELECT NULLIF(9995463931, contact_num) from Employee;>

    Išvestis:

    žemėlapis mašinraščiu

Paaiškinimas: NULL rodomas darbuotojui, kurio numeris sutampa su nurodytu numeriu. Likusiems darbuotojams grąžinama vertė1.