logo

SQL | Умовні вирази

Нижче наведено умовні вирази в SQL

    Вираз CASE: дозволяє використовувати оператори IF-THEN-ELSE без необхідності викликати процедури.
    У простому виразі CASE SQL шукає першу пару WHEN……THEN, для якої вираз дорівнює порівнянню_вираз, і повертає return_expr. Якщо наведена вище умова не виконується, існує пропозиція ELSE, SQL повертає else_expr. В іншому випадку повертає NULL.
    Ми не можемо вказати літерал null для return_expr і else_expr. Усі вирази (вираз, порівняння_вираз, повернення_вираз) мають бути одного типу даних.
    Синтаксис:



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

    приклад:

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

      Вихід:

    Пояснення : у наведених вище операторах SQL значення department_id декодується. Якщо 50, то зарплата робиться в 1,5 рази, якщо 12, то зарплата робиться в 2 рази, інакше зарплата не змінюється. Функція DECODE: полегшує виконання умовних запитів, виконуючи роботу оператора CASE або IF-THEN-ELSE.
    Функція DECODE декодує вираз подібно до логіки IF-THEN-ELSE, яка використовується в різних мовах. Функція DECODE декодує вираз після порівняння його з кожним значенням пошуку. Якщо вираз збігається з пошуком, повертається результат.
    Якщо значення за замовчуванням опущено, повертається нульове значення, якщо значення пошуку не відповідає жодному зі значень результату.
    Синтаксис:



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

    Вихід:

    Пояснення: У наведених вище операторах SQL перевіряється значення department_id. Якщо 50, то зарплата робиться в 1,5 рази, якщо 12, то зарплата робиться в 2 рази, інакше зарплата не змінюється.

    COALESCE : повертає перший ненульовий аргумент. Null повертається, лише якщо всі аргументи нульові. Його часто використовують для заміни значення за замовчуванням на нульові значення, коли дані витягуються для відображення.
    ПРИМІТКА. Як і вирази CASE, COALESCE також не обчислюватиме аргументи праворуч від першого знайденого ненульового аргументу.
    Синтаксис:

    машинописний перемикач
     COALESCE( value [, ......] )>
     Input: SELECT COALESCE(last_name, '- NA -') from Employee;>

    Вихід:

    Пояснення: - NA - відображатиметься на місці, де прізвище має значення null, інакше відображатимуться відповідні прізвища. НАЙБІЛЬШЕ: повертає найбільше значення зі списку будь-якої кількості виразів. Порівняння чутливе до регістру. Якщо типи даних усіх виразів у списку не однакові, інші вирази перетворюються на тип даних першого виразу для порівняння, і якщо це перетворення неможливе, SQL видасть помилку.
    ПРИМІТКА: Повертає значення null, якщо будь-який вираз у списку має значення null.
    Синтаксис:



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

      Пояснення: Значення ASCII малих алфавітів більше.

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

      Пояснення: Отже, оскільки null присутній, null буде показано як вихід (як зазначено в описі вище).

    IFNULL: якщо вираз1 не дорівнює NULL, повертає вираз1; інакше він повертає вираз2. Повертає числове або рядкове значення, залежно від контексту, у якому воно використовується.
    Синтаксис:

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

      Пояснення: Оскільки жоден вираз не є нульовим.

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

      Пояснення: Оскільки вираз1 дорівнює нулю, отже, показано вираз2.

    IN: перевіряє наявність значення в наборі значень і може використовуватися з WHERE, CHECK і створенням переглядів.
    ПРИМІТКА. Як і вирази CASE та COALESCE, IN також не обчислюватиме аргументи праворуч від першого знайденого ненульового аргументу.
    Синтаксис:

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

    Вихід:

    Пояснення: Усі дані про співробітників відображаються з ідентифікатором відділу 50 або 12.

    НАЙМЕНШЕ: повертає найменше значення зі списку будь-якої кількості виразів. Порівняння чутливе до регістру. Якщо типи даних усіх виразів у списку не однакові, інші вирази перетворюються на тип даних першого виразу для порівняння, і якщо це перетворення неможливе, SQL видасть помилку.
    ПРИМІТКА. Повертає значення null, якщо будь-який вираз у списку має значення null.

    Синтаксис:

     LEAST( expr1, expr2 [, ......] )>
    •  strong>Вхід: SELECT LEAST('XYZ', 'xyz') із подвійного; Вихід: НАЙМЕНШЕ ('XYZ', 'xyz') XYZ>

      Пояснення: Значення ASCII великих алфавітів менше.

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

      Пояснення: Отже, оскільки null присутній, null буде показано як вихід (як зазначено в описі вище).

    NULLIF: повертає нульове значення, якщо значення1=значення2, інакше повертає значення1.
    Синтаксис:

    Прайм програма на java
     NULLIF( value1, value2 )>

    приклад:

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

    Вихід:

Пояснення: NULL відображається для працівника, номер якого збігається з даним номером. Для решти співробітників повертається значення1.