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.
-
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).
-
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
-
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).
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.
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 [, .....] )>
Składnia:
IFNULL( expr1, expr2 )>
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 [, ......] )>
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.