360 likes | 704 Views
ОДНОСТРОЧНЫЕ ФУНКЦИИ. Функции используются для: Выполнения расчетов с данными. Изменения отдельных единиц данных. Управления выводом групп строк. Изменения формата выданных в столбцах. Преобразования типов данных в столбцах. Обзор функций в SQL. Однострочные Функция
E N D
Функции используются для: • Выполнения расчетов с данными. • Изменения отдельных единиц данных. • Управления выводом групп строк. • Изменения формата выданных в столбцах. • Преобразования типов данных в столбцах Обзор функций в SQL
Однострочные Функция - Символьные - Числовые - Функции даты Однострочная - Функции преобразования Многострочные - Групповые Многострочная Два типа функций в SQL
Однострочные функции: Манипулируют элементами данных. Принимают аргументы и возвращают одно значение. Работают с каждой строкой, возвращаемой запросом. Возвращают один результат на строку. Изменяют тип данных. Могут быть вложенными. function_name (column|expression,[arg1,arg2,...]) Однострочные функции: синтаксис
Символьные Числовые Функции работы с датой Функции преобразования Общие функции ТИПЫ ОДНОСТРОЧНЫХ ФУНКЦИИ
Символьные функции LOWER UPPER INITCAP CONCAT SUBSTR LENGTH NVL Преобразование в нижний регистр Преобразование в верхний регистр Преобразование начальных букв в верхний регистр Конкатенация значений Возврат подстроки Возврат количества символов Преобразование неопределенного значения
Преобразование регистра для строки символов • LOWER('SQL Course') sql course • UPPER('SQL Course') SQL COURSE • INITCAP('SQL Course') Sql Course Функции преобразованиярегистра
Вывод имени и фамилии всех служащих с фамилией Patel. SQL> SELECT first_name, last_name 2> FROM s_emp 3> WHERE last_name = 'PATEL'; no rows selected SQL> SELECT first_name, last_name 2> FROM s emp 3> WHERE UPPER(last_name) = 'PATEL'; FIRST_NAME LAST_NAME Vikram Patel Radha Patel Пример
Работа с символьными строками • CONCAT('Good', 'String') GoodString • SUBSTR('String',1,3) Str • LENGTH('String') 6 Символьные функции
Символьные функции LPAD RPAD Возврат подстроки, дополненной заданными символами до необходимого размера слева или справа LPAD(‘строка', n [,‘символ‘]) SQL> SELECT LPAD('Page 1',15,'*.') LPAD_example 2 FROM DUAL; LPAD example --------------- *.*.*.*.*Page 1
ROUND Округляет значение до заданной точности. • TRUNC Усекает значение до заданного количества десятичных знаков. • MOD Возвращает остаток от деления. Числовые функции
ROUND (45.923,2) 45.92 ROUND (45.923,0) 46 ROUND (45.923,-1) 50 TRUNC (45.923,2) 45.92 TRUNC (45.923) 45 TRUNC (45.923,-1) 40 Функции ROUND TRUNC
Вычисление остатка от деления одного значения на другое • MOD(1600,300) 100 ФункцияMOD
Тип DATE • Oracle поддерживает оба типа и дата и время, хотя по-другому, чем в стандарте SQL2. Oracle использует один тип DATE, а не два - для даты и времени. Тип DATE хранится в специальном внутреннем формате, который включает не только месяц, день, и год, но также и час, минута, и секунда. • create table x(a int, b date);
Формат по умолчанию "DD-MON-YY"
Стандарт ANSI '2008-11-11'
Oracle хранит данные во внутреннем цифровом формате. - Век, год, месяц, число, часы, минуты, секунды • По умолчанию дата выдается в формате DD-MON-YY (число- месяц-год) • Функция SYSDATE возвращает дату и время • DUAL - это фиктивная таблица, используемая для просмотра SYSDATE. Пример: вывод текущей даты с помощью таблицы DUAL. SQL> SELECT SYSDATE 2> FROM DUAL; Формат даты Oracle
Результатом прибавления числа к дате и вычитания числа из даты является дата. Результатом вычитания одной даты из другой является количество дней, разделяющих эти даты. Прибавление часов к дате производится путем деления количества часов на 24. Арифметические операции с датами
Функции для работы с датами • MONTHS_BETWEEN Количество месяцев, разделяющих две даты. • ADD_MONTHS Добавление календарных месяцев к дате. • NEXT_DAY Ближайшая дата, когда наступит заданный день недели. • LAST_DAY Последняя дата текущего месяца. • ROUND Округление до целых суток. • TRUNC Отсечение части даты, обозначающей время.
MONTHS_BETWEEN('01-SEP-95','11-JAN-94') 16.6774194 ADD_MONTHS('11-JAN-94',6) '11-JUL-94' NEXT_DAY('01-SEP-95','FRIDAY') '08-SEP-95' LAST_DAY('01-SEP-95') '30-SEP-95' Функции для работы с датами
ROUND('25-MAY-95','MONTH') 01-JUN-95 ROUND('25-MAY-95','YEAR') 01-JAN-95 TRUNC('25-MAY-95','MONTH') 01-MAY-95 TRUNC('25-MAY-95','YEAR') 01-JAN-95 Функции для работы с датами
Функция TO_CHAR преобразует число или строку даты в строку символов. Функция TO_NUMBER преобразует строку символов, состоящую из цифр, в число. Функция TO_DATE преобразует строку символов с датой в значение типа "дата". Функции преобразования могут использовать модель формата, состоящую из нескольких элементов. Функции преобразования
ТО_CHAR (date,'fmt') Модель формата: • Должна быть заключена в апострофы. • Различает символы верхнего и нижнего регистров. • Может включать любые разрешенные элементы формата даты. • Использует элемент fm для удаления конечных пробелов и ведущих нулей. • Отделяется от значения даты запятой. Функция TO_CHAR с датами: синтаксис
YYYY - полный год цифрами YEAR - год прописью ММ -двузначное цифровое обозначение месяца MONTH - полное название месяца DY - трехзначное алфавитное сокращенное название дня недели DAY - полное название дня Элементы формата даты
Форматы времени Функция TO_CHAR с форматами дат
Использование префикса FMПрефикс FM подавляет конечные пробелы в названиях месяцев и днейнедели, оставляя результат переменной длины. Подавляются и ведущиенули в числах. Повтор префикса FM отменяет подавление.Суффиксы, влияющие на формат вывода чисел Другие форматы
Элементы, связанные со временем, задают формат части даты, указывающей время. - HH24:MI:SS AM 15:45:32 РМ • Символьные строки добавляются в кавычках, - DD " Of " MONTH 12 of OCTOBER • Числовые суффиксы используются для вывода числительных словами. - ddspth fourteenth Элементы модели формата даты
Пример Вывод имен и дат найма всех служащих, нанятых в 1991 году. Вывод дат должен производиться в формате типа "7 February 1991". SQL> SELECT last_name, TO_CHAR (start_date, 2 'fmDD "of" Month YYYY') HIREDATE 3 FROM s_emp 4 WHERE start_date LIKE '%91'; LAST_NAME HIREDATE Nagayama 17 of June 1991 Urguhart 18 of January 1991 Havel 27 of February 1991 Функция TO_CHAR с форматами дат
ТО_СНАR(число, ’fmt’) Форматы, используемые с функцией TO_CHAR для вывода символьного значения в виде числа: • 9 - цифра. • 0 - вывод нуля. • $ - плавающий знак доллара. • L - плавающий символ местной валюты • . - вывод десятичной точки. • , - вывод разделителя троек цифр. Функция TO_CHAR с числами:синтаксис
Преобразование строки символов в числовой формат с помощью функции TO_NUMBER: TO_NUMBER(Char) • Преобразование строки символов в формат даты с помощью функции TO_DATE: - TO_DATE ('10 September 1992', 'dd Month YYYY') Использование элементов формата. TO_DATE(char[,'fmt']) Функции TO_NUMBER и TO_DATE: синтаксис
Работа с любыми типами данных • NVL • DECODE • GREATEST • LEAST Общие функции
Аналогична серии вложенных операторов IF-THEN-ELSE • Выражение последовательно сравнивается со значениями • Значение_по_умолчанию возвращается, если выражение не соответствует ни одному из значений DECODE (выражение, значение1, результат1, значение2, результат2, … значение<n>, результат<n>, значение_по_умолчанию) Общие функции: DECODE
SQL> SELECT DECODE (deptno, 10, 'ACCOUNTING', 2 20, 'RESEARCH', 3 30, 'SALES', 4 40, 'OPERATION', 5 'NONE') 6 FROM DEPT; Функция DECODE: пример DECODE(DEP ---------- ACCOUNTING RESEARCH SALES OPERATION
Шаг1 = результат1 Шаг2 = результат2 Шаг3 = результат3 • Однострочные функции могут быть вложены на любую глубину. • Вложенные функции вычисляются от самого глубокого уровня к внешнему. F3(F2(Fl(col,arg1),arg2),arg3) Вложенные однострочныефункции
SQL> SELECT last_name, 2 NVL(TO_CHAR(manager_id),‘No Manager') 3 FROM s_emp 4 WHERE manager_id IS NULL; 1. Вычисление внутренней функции для преобразования числового значения в строку символов. - Результат1=TO_CHAR(manager_id) 2. Вычисление внешней функции для замены неопределенного значения текстовой строкой - NVL(Результат1,'No Manager') Вложенные функции
Однострочные функции могут быть вложены на любую глубину. Однострочные функции работают с символьными, числовыми данными и данными типа "дата". К функциям преобразования относятся ТО_CHAR, TO_DATE, TO_NUMBER. SYSDATE - псевдостолбец, используемый для вывода текущей даты и времени. DUAL - фиктивная таблица в базе данных. Заключение