logo

SQL | Voorwaardelijke expressies

Hieronder volgen voorwaardelijke expressies in SQL

    De CASE-expressie: Hiermee kunt u IF-THEN-ELSE-instructies gebruiken zonder dat u procedures hoeft aan te roepen.
    In een eenvoudige CASE-expressie zoekt de SQL naar het eerste WHEN……THEN-paar waarvoor expr gelijk is aan vergelijking_expr en retourneert return_expr. Als niet aan bovenstaande voorwaarde wordt voldaan, bestaat er een ELSE-clausule en retourneert de SQL else_expr. Anders wordt NULL geretourneerd.
    We kunnen geen letterlijke nul opgeven voor de return_expr en de else_expr. Alle expressies (expr, vergelijking_expr, return_expr) moeten van hetzelfde gegevenstype zijn.
    Syntaxis:



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

    Voorbeeld:

    Java-waarde van tekenreeks
       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;>

      Uitgang:

    Uitleg : In bovenstaande SQL-instructies wordt de waarde van afdeling_id gedecodeerd. Als het 50 is, wordt het salaris 1,5 keer betaald, als het 12 is, wordt het salaris 2 keer gemaakt, anders is er geen verandering in het salaris. De DECODE-functie: vergemakkelijkt voorwaardelijke onderzoeken door het werk van een CASE- of IF-THEN-ELSE-instructie uit te voeren.
    De functie DECODE decodeert een expressie op een manier die vergelijkbaar is met de IF-THEN-ELSE-logica die in verschillende talen wordt gebruikt. De functie DECODE decodeert de expressie nadat deze met elke zoekwaarde is vergeleken. Als de expressie hetzelfde is als zoeken, wordt het resultaat geretourneerd.
    Als de standaardwaarde wordt weggelaten, wordt een nulwaarde geretourneerd als een zoekwaarde met geen van de resultaatwaarden overeenkomt.
    Syntaxis:



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

    Uitgang:

    Uitleg: In bovenstaande SQL-instructies wordt de waarde van Department_id getest. Als het 50 is, wordt het salaris 1,5 keer betaald, als het 12 is, wordt het salaris 2 keer gemaakt, anders is er geen verandering in het salaris.

    COALESCE : Geeft het eerste niet-null-argument terug. Null wordt alleen geretourneerd als alle argumenten nul zijn. Het wordt vaak gebruikt om nulwaarden te vervangen door een standaardwaarde wanneer gegevens worden opgehaald voor weergave.
    OPMERKING: Net als bij CASE-expressies zal COALESCE ook de argumenten rechts van het eerste gevonden niet-null-argument niet evalueren.
    Syntaxis:

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

    Uitgang:

    Uitleg: - NA - wordt weergegeven op de plaats waar de achternaam nul is, anders worden de respectievelijke achternamen weergegeven. GREATEST: Retourneert de grootste waarde uit een lijst met een willekeurig aantal expressies. Vergelijking is hoofdlettergevoelig. Als de datatypes van alle expressies in de lijst niet hetzelfde zijn, worden alle expressies ter vergelijking geconverteerd naar het datatype van de eerste expressie. Als deze conversie niet mogelijk is, zal SQL een fout genereren.
    OPMERKING: Retourneert null als een expressie in de lijst null is.
    Syntaxis:



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

      Uitleg: De ASCII-waarde van kleine alfabetten is groter.

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

      Uitleg: Omdat null aanwezig is, zal null als uitvoer worden weergegeven (zoals vermeld in de bovenstaande beschrijving).

    IFNULL: Als expr1 niet NULL is, wordt expr1 geretourneerd; anders retourneert het expr2. Retourneert een numerieke waarde of tekenreekswaarde, afhankelijk van de context waarin deze wordt gebruikt.
    Syntaxis:

     IFNULL( expr1, expr2 )>
    •  Input: SELECT IFNULL(1,0) FROM dual;>
       Output: - 1>

      Uitleg : Sindsdien is geen enkele uitdrukking nul.

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

      Uitleg: Omdat expr1 nul is, wordt expr2 weergegeven.

    IN: Controleert of een waarde aanwezig is binnen een set waarden en kan worden gebruikt met WHERE, CHECK en het maken van views.
    OPMERKING: Hetzelfde als de CASE- en COALESCE-expressies, zal IN ook de argumenten rechts van het eerste gevonden niet-null-argument niet evalueren.
    Syntaxis:

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

    Uitgang:

    Uitleg: Alle gegevens van Medewerkers worden weergegeven met afdelings-ID 50 of 12.

    LEAST: Retourneert de kleinste waarde uit een lijst met een willekeurig aantal expressies. Vergelijking is hoofdlettergevoelig. Als de datatypes van alle expressies in de lijst niet hetzelfde zijn, worden alle expressies ter vergelijking geconverteerd naar het datatype van de eerste expressie. Als deze conversie niet mogelijk is, zal SQL een fout genereren.
    OPMERKING: Retourneert null als een expressie in de lijst null is.

    Syntaxis:

     LEAST( expr1, expr2 [, ......] )>
    •  strong>Invoer: SELECT LEAST('XYZ', 'xyz') uit dual; Uitvoer: LEAST('XYZ', 'xyz') XYZ>

      Uitleg: De ASCII-waarde van hoofdletteralfabetten is kleiner.

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

      Uitleg: Omdat null aanwezig is, zal null als uitvoer worden weergegeven (zoals vermeld in de beschrijving hierboven).

    NULLIF: retourneert een nulwaarde als waarde1=waarde2, anders wordt waarde1 geretourneerd.
    Syntaxis:

     NULLIF( value1, value2 )>

    Voorbeeld:

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

    Uitgang:

    in een string werpen

Uitleg: NULL wordt weergegeven voor de werknemer wiens nummer overeenkomt met het opgegeven nummer. Voor de rest van de Werknemers wordt waarde1 geretourneerd.