ОДНОСТРОЧНЫЕ ФУНКЦИИ

advertisement
ОДНОСТРОЧНЫЕ
ФУНКЦИИ
ОБЗОР ФУНКЦИЙ В 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')
SUBSTR('String',1,3)
LENGTH('String')
GoodString
Str
6
СИМВОЛЬНЫЕ ФУНКЦИИ
LPAD
RPAD
Возврат подстроки, дополненной
заданными символами до необходимого
размера слева или справа
LPAD(‘строка', n [,‘символ‘])
SQL> SELECT LPAD('Page 1',15,'*.') LPAD_example
2 FROM DUAL;
LPAD example
--------------*.*.*.*.*Page 1
ЧИСЛОВЫЕ ФУНКЦИИ

ROUND

TRUNC

MOD
Округляет значение до заданной
точности.
Усекает значение до заданного
количества десятичных знаков.
Возвращает остаток от деления.
ФУНКЦИИ ROUND TRUNC






ROUND (45.923,2)
ROUND (45.923,0)
ROUND (45.923,-1)
TRUNC (45.923,2)
TRUNC (45.923)
TRUNC (45.923,-1)
45.92
46
50
45.92
45
40
ФУНКЦИЯ MOD


Вычисление остатка от деления одного значения на
другое
MOD(1600,300)
100
ТИП DATE
Oracle поддерживает оба типа и дата и
время, хотя по-другому, чем в стандарте
SQL2. Oracle использует один тип DATE, а
не два - для даты и времени. Тип DATE
хранится в специальном внутреннем
формате, который включает не только
месяц, день, и год, но также и час, минута,
и секунда.
 create table x(a int, b date);

ФОРМАТ ПО УМОЛЧАНИЮ

"DD-MON-YY"
СТАНДАРТ ANSI

'2008-11-11'
ФОРМАТ ДАТЫ ORACLE
Oracle хранит данные во внутреннем цифровом
формате.
- Век, год, месяц, число, часы, минуты, секунды
 По умолчанию дата выдается в формате DD-MON-YY
(число- месяц-год)
 Функция SYSDATE возвращает дату и время
 DUAL - это фиктивная таблица, используемая для
просмотра SYSDATE.
Пример: вывод текущей даты с помощью таблицы
DUAL.

SQL> SELECT SYSDATE
2> FROM DUAL;
АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ С
ДАТАМИ



Результатом прибавления числа к дате и вычитания
числа из даты является дата.
Результатом вычитания одной даты из другой
является количество дней, разделяющих эти даты.
Прибавление часов к дате производится путем
деления количества часов на 24.
ФУНКЦИИ ДЛЯ РАБОТЫ С ДАТАМИ
Количество месяцев,
разделяющих две даты.
Добавление календарных месяцев
к дате.
Ближайшая дата, когда наступит
заданный день недели.
Последняя дата текущего месяца.
Округление до целых суток.
Отсечение части даты,
обозначающей время.

MONTHS_BETWEEN

ADD_MONTHS

NEXT_DAY

LAST_DAY
ROUND
TRUNC


ФУНКЦИИ ДЛЯ РАБОТЫ С
ДАТАМИ




MONTHS_BETWEEN('01-SEP-95','11-JAN-94')
ADD_MONTHS('11-JAN-94',6)
NEXT_DAY('01-SEP-95','FRIDAY')
LAST_DAY('01-SEP-95')
16.6774194
'11-JUL-94'
'08-SEP-95'
'30-SEP-95'
ФУНКЦИИ ДЛЯ РАБОТЫ С
ДАТАМИ




ROUND('25-MAY-95','MONTH')
ROUND('25-MAY-95','YEAR')
TRUNC('25-MAY-95','MONTH')
TRUNC('25-MAY-95','YEAR')
01-JUN-95
01-JAN-95
01-MAY-95
01-JAN-95
ФУНКЦИИ ПРЕОБРАЗОВАНИЯ




Функция TO_CHAR преобразует число или строку
даты в строку символов.
Функция TO_NUMBER преобразует строку символов,
состоящую из цифр, в число.
Функция TO_DATE преобразует строку символов с
датой в значение типа "дата".
Функции преобразования могут использовать
модель формата, состоящую из нескольких
элементов.
ФУНКЦИЯ TO_CHAR С ДАТАМИ:
СИНТАКСИС
ТО_CHAR (date,'fmt')
Модель формата:
 Должна быть заключена в апострофы.
 Различает символы верхнего и нижнего регистров.
 Может включать любые разрешенные элементы
формата даты.
 Использует элемент fm для удаления конечных
пробелов и ведущих нулей.
 Отделяется от значения даты запятой.
ЭЛЕМЕНТЫ ФОРМАТА ДАТЫ






YYYY - полный год цифрами
YEAR - год прописью
ММ -двузначное цифровое обозначение месяца
MONTH - полное название месяца
DY - трехзначное алфавитное сокращенное название
дня недели
DAY - полное название дня
ФУНКЦИЯ TO_CHAR С
ФОРМАТАМИ ДАТ
Форматы времени
Элемент
АМ или РМ
A.M. или P.M.
НН или НН12 или
НН24
MI
SS
SSSSS
Описание
Индикатор "до полудня/после
полудня".
Индикатор "до полудня/после
полудня" с точками.
Время суток, час в 12-часовом диапазоне или час в 24-часовом диапазоне.
Минуты (0-59).
Секунды (0-59).
Количество секунд после полуночи (086399).
ДРУГИЕ ФОРМАТЫ
Элемент
Описание
/,.
Знаки пунктуации включаются в результат.
Строка, заключенная в кавычки,
"из множества"
включается в результат.
Использование префикса FM
Префикс FM подавляет конечные пробелы в названиях
месяцев и дней недели, оставляя результат переменной
длины. Подавляются и ведущие
нули в числах. Повтор префикса FM отменяет подавление.
Суффиксы, влияющие на формат вывода чисел
Суффикс
ТН
SP
SPTH или THSP
Описание
Порядковый номер (например, DDTH для вывода
в формате "4th")
Вывод числа словами (например, DDSP для
вывода в слова "FOUR")
Вывод порядкового числительного словами
(например, DDSPTH для вывода слова FOURTH).
ЭЛЕМЕНТЫ МОДЕЛИ ФОРМАТА
ДАТЫ



Элементы, связанные со временем, задают формат
части даты, указывающей время.
- HH24:MI:SS AM
15:45:32 РМ
Символьные строки добавляются в кавычках,
- DD " Of " MONTH
12 of OCTOBER
Числовые суффиксы используются для вывода
числительных словами.
- ddspth
fourteenth
ФУНКЦИЯ TO_CHAR С
ФОРМАТАМИ ДАТ
Пример
Вывод имен и дат найма всех служащих, нанятых в
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
Nagayama
Urguhart
Havel
HIREDATE
17 of June 1991
18 of January 1991
27 of February 1991
ФУНКЦИЯ TO_CHAR С ЧИСЛАМИ:
СИНТАКСИС
ТО_СНАR(число, ’fmt’)
Форматы, используемые с функцией TO_CHAR для
вывода символьного значения в виде числа:
 9 - цифра.
 0 - вывод нуля.
 $ - плавающий знак доллара.
 L - плавающий символ местной валюты
 . - вывод десятичной точки.
 , - вывод разделителя троек цифр.
ФУНКЦИИ TO_NUMBER И TO_DATE:
СИНТАКСИС

Преобразование строки символов в числовой формат
с помощью функции TO_NUMBER:
TO_NUMBER(Char)

Преобразование строки символов в формат даты с
помощью функции TO_DATE:
- TO_DATE ('10 September 1992', 'dd Month YYYY')
Использование элементов формата.
TO_DATE(char[,'fmt'])
ОБЩИЕ ФУНКЦИИ
Работа с любыми типами данных




NVL
DECODE
GREATEST
LEAST
ОБЩИЕ ФУНКЦИИ: DECODE



Аналогична серии вложенных операторов
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(DEP
---------ACCOUNTING
RESEARCH
SALES
OPERATION
ВЛОЖЕННЫЕ ОДНОСТРОЧНЫЕ
ФУНКЦИИ


Однострочные функции могут быть вложены на
любую глубину.
Вложенные функции вычисляются от самого
глубокого уровня к внешнему.
F3(F2(Fl(col,arg1),arg2),arg3)
Шаг1 = результат1
Шаг2 = результат2
Шаг3 = результат3
ВЛОЖЕННЫЕ ФУНКЦИИ
SQL>
2
3
4
SELECT last_name,
NVL(TO_CHAR(manager_id),‘No Manager')
FROM s_emp
WHERE manager_id IS NULL;
1. Вычисление внутренней функции для
преобразования числового значения в строку
символов.
- Результат1 = TO_CHAR(manager_id)
2. Вычисление внешней функции для замены
неопределенного значения текстовой строкой
- NVL(Результат1,'No Manager')
ЗАКЛЮЧЕНИЕ





Однострочные функции могут быть вложены на
любую глубину.
Однострочные функции работают с символьными,
числовыми данными и данными типа "дата".
К функциям преобразования относятся ТО_CHAR,
TO_DATE, TO_NUMBER.
SYSDATE - псевдостолбец, используемый для
вывода текущей даты и времени.
DUAL - фиктивная таблица в базе данных.
Download