жна застосовувати для перетворення будь-якого типу даних, але результат завжди буде того ж типу, що й вираження1.
Перетворення NVL для різних типів: - NVL (числовий стовпець, 9) .- NVL (стовпець дати, 01-СІЧ - 95 ). або VARCHAR2 - NVL (символи | стовпець, Недоступно ').
4.12 Лабораторна робота. Застосування функції NVL
Функція NVL для роботи з невизначеними значеннями в Oracle SQL.
Завдання:
Напишіть запит, який виводить інформацію про ім'я та прізвища співробітників з таблиці hr.employees., а також ставку комісії (стовпець COMMISSION_PCT) для співробітника. При цьому для тих співробітників, для яких комісія не визначена, потрібно вивести значення 0. Результат виконання запиту повинен бути таким, як представлено на рис. 3.5-1.
Рис. 3.5-1 (показані значення починаючи з рядка 51)
Рішення:
Код відповідного запиту може бути таким:
SELECT first_name AS «Ім'я», last_name As «Прізвище», NVL (COMMISSION_PCT, 0) As «Ставка комісії» FROM hr.employees.
5. Функція DECODE
Функція DECODE виконує ту ж функцію, що і CASE, єдиною відмінністю є її синтаксис. Треба відзначити, що історично функція DECODE в SQL набагато старше, але ORACLE, на увазі легшою читаності CASE, ввів також дану конструкцію в свій SQL.
DECODE (expression, search_1, result_1, Search _ 2, result_2, ...... search_n, result_n, default), де
expression - це той вираз, що порівнюється з search1, якщо воно збігається, то виходить результат result1. Інакше йде друга перевірка і так далі до n-ой перевірки. Наприкінці в випадки всіх невдалих перевірок в результаті вийде default.
І перепишемо верхній приклад CASE, але при цьому вже використовуючи DECODE. Як нижче з прикладу ми бачимо, що ніякої різниці у виконання між CASE і DECODE немає.
SELECT job, sal, CASE job WHEN CLERK THEN sal * 0.10 WHEN MANAGER THEN sal * 0.12 WHEN ANALYST THEN sal * 0.15 ELSE 0 END BONUS, (job, CLERK raquo ;, sal * 0.10, MANAGER laquo ;, sal * 0.12, ANALYST ', sal * 0. 15,0)
BONUS_2 FROM EMP.
5.1 Лабораторна робота. Застосування функції DECODE
Функція DECODE для перевірки умов в запитах Oracle SQL.
Завдання:
Напишіть запит, який повертає інформацію про ім'я, прізвища та посади співробітників (стовпець JOB_ID) на основі таблиці hr.employees. При цьому:
· якщо в стовпці JOB_ID для співробітників знаходиться значення SA_REP, то має виводитися «Торговий представник»;
· якщо в стовпці JOB_ID для співробітників знаходиться значення SA_MAN, то має виводитися «Менеджер з продажу»;
· якщо в цьому стовпці знаходиться будь-яке інше значення, то має виводитися «Інше».
Результат запиту повинен бути таким, як представлено на рис. 3.6-1
Рис. 3.6-1
Рішення:
Код відповідного запиту може бути таким:
SELECT first_name AS «Ім'я», last_name As «Прізвище», DECODE (JOB_ID, SA_REP raquo ;, Торговий представник raquo ;, SA_MAN raquo ;, Менеджер з продажу raquo ;, Інша ) AS «Посада» FROM hr.employees.
5.2 Вкладення функцій
Однорядкові функції можуть бути вкладені на будь-яку глибину, тобто значення, що повертається однією функцією, може бути використано в якості аргументу іншої функції. Вкладені функції обчислюються від найглибшого рівня до верхнього.
Приклад : Для кожного службовця великими літерами вивести перший букву його імені з крапкою та прізвище в одному стовпці. Стовпець назвати employees.
SELECT UPPER (CONCAT (CONCAT (SUBSTR (first_name, 1,1),.), last_name)) employees FROM s_emp;
Висновок
Ми розглянули функції Oracle SQL і застосування їх на практиці. Сформували концептуальні уявлення про основні принципи роботи з СУБД ORACLE, розробку баз даних в СУБД ORACLE, основні засоби і технології СУБД ORACLE, можливості проц...