logo

SQL | Wyrażenia warunkowe

Poniżej znajdują się wyrażenia warunkowe w języku SQL

    Wyrażenie CASE: Pozwala używać instrukcji IF-THEN-ELSE bez konieczności wywoływania procedur.
    W prostym wyrażeniu CASE SQL wyszukuje pierwszą parę KIEDY...THEN, dla której wyrażenie jest równe wyrażeniu_porównania i zwraca wyrażenie_zwrotu. Jeśli powyższy warunek nie jest spełniony, istnieje klauzula ELSE, SQL zwraca else_expr. W przeciwnym razie zwraca NULL.
    Nie możemy określić wartości null dla wyrażeń return_expr i else_expr. Wszystkie wyrażenia (wyrażenie, wyrażenie_porównania, wyrażenie_zwrotu) muszą być tego samego typu danych.
    Składnia:



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

    Przykład:

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

      Wyjście :

    Wyjaśnienie : W powyższych instrukcjach SQL dekodowana jest wartość identyfikatora działu. Jeśli wynosi 50, wówczas wynagrodzenie jest wypłacane 1,5 razy, jeśli wynosi 12, to wynagrodzenie jest wypłacane 2 razy, w przeciwnym razie wynagrodzenie nie ulega zmianie. Funkcja DECODE: Ułatwia zapytania warunkowe, wykonując działanie instrukcji CASE lub JEŻELI-TO-ELSE.
    Funkcja DECODE dekoduje wyrażenie w sposób podobny do logiki JEŻELI-TO-ELSE stosowanej w różnych językach. Funkcja DECODE dekoduje wyrażenie po porównaniu go z każdą wyszukiwaną wartością. Jeśli wyrażenie jest takie samo jak wyszukiwanie, zwracany jest wynik.
    Jeśli wartość domyślna zostanie pominięta, zwracana jest wartość null, jeśli wyszukiwana wartość nie pasuje do żadnej z wartości wyników.
    Składnia:



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

    Wyjście :

    Wyjaśnienie: W powyższych instrukcjach SQL testowana jest wartość działu_id. Jeśli wynosi 50, wówczas wynagrodzenie jest wypłacane 1,5 razy, jeśli wynosi 12, to wynagrodzenie jest wypłacane 2 razy, w przeciwnym razie wynagrodzenie nie ulega zmianie.

    COALESCE: Zwraca pierwszy argument inny niż null. Wartość Null jest zwracana tylko wtedy, gdy wszystkie argumenty mają wartość null. Często używa się go do zastąpienia wartości domyślnej wartości null podczas pobierania danych do wyświetlenia.
    UWAGA: Podobnie jak wyrażenia CASE, COALESCE również nie będzie oceniać argumentów po prawej stronie pierwszego znalezionego argumentu innego niż null.
    Składnia:

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

    Wyjście:

    Wyjaśnienie: - NA - będzie wyświetlane w miejscu, gdzie nazwisko ma wartość null, w przeciwnym razie zostaną wyświetlone odpowiednie nazwiska. NAJWIĘKSZA: Zwraca największą wartość z listy dowolnej liczby wyrażeń. W porównaniu rozróżniana jest wielkość liter. Jeśli typy danych wszystkich wyrażeń na liście nie są takie same, pozostałe wyrażenia są konwertowane na typ danych pierwszego wyrażenia w celu porównania, a jeśli ta konwersja nie jest możliwa, SQL zgłosi błąd.
    NOTATKA: Zwraca wartość null, jeśli dowolne wyrażenie na liście ma wartość null.
    Składnia:



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

      Wyjaśnienie: Wartość ASCII małych alfabetów jest większa.

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

      Wyjaśnienie: Ponieważ wartość null jest obecna, wartość null zostanie wyświetlona jako wynik (jak wspomniano w opisie powyżej).

    JEŚLI NULL: Jeśli wyrażenie1 nie ma wartości NULL, zwraca wyrażenie1; w przeciwnym razie zwraca wyrażenie2. Zwraca wartość liczbową lub łańcuchową, w zależności od kontekstu, w którym została użyta.
    Składnia:

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

      Wyjaśnienie : Ponieważ żadne wyrażenie nie ma wartości null.

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

      Wyjaśnienie: Ponieważ wyrażenie1 ma wartość null, dlatego wyświetlane jest wyrażenie2.

      właściwości kwasowe w dbm
    IN: Sprawdza, czy wartość występuje w zestawie wartości i może być używana z WHERE, CHECK i tworzeniem widoków.
    UWAGA: Podobnie jak w przypadku wyrażeń CASE i COALESCE, IN również nie będzie oceniać argumentów po prawej stronie pierwszego znalezionego argumentu innego niż null.
    Składnia:

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

    Wyjście:

    Wyjaśnienie: Wszystkie dane pracowników są wyświetlane z identyfikatorem działu 50 lub 12.

    NAJMNIEJ: Zwraca najmniejszą wartość z listy dowolnej liczby wyrażeń. W porównaniu rozróżniana jest wielkość liter. Jeśli typy danych wszystkich wyrażeń na liście nie są takie same, pozostałe wyrażenia są konwertowane na typ danych pierwszego wyrażenia w celu porównania, a jeśli ta konwersja nie jest możliwa, SQL zgłosi błąd.
    UWAGA: Zwraca wartość null, jeśli którekolwiek wyrażenie na liście ma wartość null.

    Składnia:

     LEAST( expr1, expr2 [, ......] )>
    •  strong>Wejście: WYBIERZ NAJMNIEJ('XYZ', 'xyz') z dualnego; Wynik: NAJMNIEJ('XYZ', 'xyz') XYZ>

      Wyjaśnienie: Wartość ASCII wielkich alfabetów jest mniejsza.

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

      Wyjaśnienie: Ponieważ wartość null jest obecna, wartość null zostanie wyświetlona jako wynik (jak wspomniano w opisie powyżej).

    NULLIF: Zwraca wartość null, jeśli wartość 1 = wartość 2, w przeciwnym razie zwraca wartość 1.
    Składnia:

     NULLIF( value1, value2 )>

    Przykład:

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

    Wyjście:

Wyjaśnienie: Dla Pracownika, którego numer jest zgodny z podanym numerem, wyświetla się NULL. Dla reszty pracowników zwracana jest wartość 1.