Однострочные функции

Содержание

Слайд 2

А.М. Гудов Цели занятия Различные типы функций в SQL. Основные концепции

А.М. Гудов

Цели занятия

Различные типы функций в SQL.
Основные концепции использования функций.
Включение в

команды SELECT функций различных типов — символьных, числовых и типа “дата“.
Функции преобразования данных и их использование.
Слайд 3

А.М. Гудов Обзор функций в SQL Функции используются для: Выполнения расчетов

А.М. Гудов

Обзор функций в SQL

Функции используются для:
Выполнения расчетов с данными.
Изменения отдельных

единиц данных.
Управления выводом групп строк.
Изменения формата вывода дат.
Преобразования типов данных в столбцах.
Слайд 4

А.М. Гудов Два типа функций в SQL Однострочные Символьные Числовые Функции

А.М. Гудов

Два типа функций в SQL

Однострочные
Символьные
Числовые
Функции даты
Функции преобразования
Многострочные
Групповые

Одно- строчная

Много-
строчная

Функция

Слайд 5

А.М. Гудов Однострочные функции: синтаксис Однострочные функции: Манипулируют элементами данных. Принимают

А.М. Гудов

Однострочные функции: синтаксис

Однострочные функции:
Манипулируют элементами данных.
Принимают аргументы и возвращают одно

значение.
Работают с каждой строкой, возвращаемой запросом.
Возвращают один результат на строку.
Изменяют тип данных.
Могут быть вложенными.
Синтаксис:

function_name (column|expression, [arg1, arg2,...])

Слайд 6

А.М. Гудов Символьные функции LOWER Преобразование в нижний регистр UPPER Преобразование

А.М. Гудов

Символьные функции

LOWER Преобразование в нижний регистр
UPPER Преобразование в верхний регистр
INITCAP Преобразование начальных букв в

верхний регистр
CONCAT Конкатенация значений
SUBSTR Возврат подстроки
LENGTH Возврат количества символов
NVL Преобразование неопределенного значения
Слайд 7

А.М. Гудов Функции преобразования регистра Преобразование регистра для строки символов LOWER('SQL

А.М. Гудов

Функции преобразования регистра

Преобразование регистра для строки символов
LOWER('SQL Course') sql course
UPPER('SQL

Course') SQL COURSE
INITCAP('SQL Course') Sql Course

SQL> SELECT first_name, last_name
2 FROM s_emp
3 WHERE last_name = 'PATEL';
no rows returned

SQL> SELECT first_name, last_name
2 FROM s_emp
3 WHERE UPPER(last_name) = 'PATEL';
FIRST_NAME LAST_NAME
-------------------- --------------------
Vikram Patel
Radha Patel

Слайд 8

А.М. Гудов Символьные и числовые функции Работа с символьными строками: CONCAT('Good',

А.М. Гудов

Символьные и числовые функции

Работа с символьными строками:
CONCAT('Good', 'String') GoodString
SUBSTR('String',1,3) Str
LENGTH('String')

6

Числовые функции:
ROUND Округляет значение до заданной точности
TRUNC Усекает значение до заданного количества десятичных знаков
MOD Возвращает остаток от деления

Слайд 9

А.М. Гудов Функции ROUND, TRUNC, MOD ROUND (45.923, 2) 45.92 ROUND

А.М. Гудов

Функции 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

Вычисление остатка от деления одного значения на другое
MOD(1600,300) 100

Слайд 10

А.М. Гудов Формат даты Oracle Oracle хранит данные во внутреннем цифровом

А.М. Гудов

Формат даты Oracle

Oracle хранит данные во внутреннем цифровом формате. - Век,

год, месяц, число, минуты, секунды
По умолчанию дата выдается в формате DD-MON-YY
Функция SYSDATE возвращает дату и время
DUAL - это фиктивная таблица, используемая для просмотра SYSDATE.

Арифметические операции с датами:
Результатом прибавления числа к дате и вычитания числа из даты является дата.
Результатом вычитания одной даты из другой является количество дней, разделяющих эти даты.
Прибавление часов к дате производится путем деления количества часов на 24.

Слайд 11

А.М. Гудов Функции для работы с датами MONTHS_BETWEEN Число месяцев, разделяющих

А.М. Гудов

Функции для работы с датами

MONTHS_BETWEEN Число месяцев, разделяющих две даты
ADD_MONTHS Добавление календарных месяцев

к дате
NEXT_DAY Ближайшая дата, когда наступит заданный день недели
LAST_DAY Последняя дата текущего месяца
ROUND Округление до целых суток
TRUNC Отсечение части даты, обозначающей время
Слайд 12

А.М. Гудов Функции для работы с датами MONTHS_BETWEEN('01-SEP-95','11-JAN-94') 1.9774194 ADD_MONTHS('11-JAN-94',6) '11-JUL-94'

А.М. Гудов

Функции для работы с датами

MONTHS_BETWEEN('01-SEP-95','11-JAN-94') 1.9774194
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
Слайд 13

А.М. Гудов Функции преобразования Функция TO_CHAR преобразует число или строку даты

А.М. Гудов

Функции преобразования

Функция TO_CHAR преобразует число или строку даты в строку

символов.
Функция TO_NUMBER преобразует строку символов, состоящую из цифр, в число.
Функция TO_DATE преобразует строку символов с датой в значение типа “дата“.
Функции преобразования могут использовать модель формата, состоящую из нескольких элементов.
Слайд 14

А.М. Гудов Функция TO_CHAR с датами Модель формата: Должна быть заключена

А.М. Гудов

Функция TO_CHAR с датами

Модель формата:
Должна быть заключена в апострофы. Различает

символы верхнего и нижнего регистров.
Может включать любые разрешенные элементы формата даты.
Использует элемент fm для удаления конечных пробелов и ведущих нулей.
Отделяется от значения даты запятой.

TO_CHAR(date, 'fmt')

Слайд 15

А.М. Гудов Элементы формата даты YYYY - полный год цифрами YEAR

А.М. Гудов

Элементы формата даты

YYYY - полный год цифрами
YEAR - год прописью
MM

- двузначное цифровое обозначение месяца
MONTH - полное название месяца
DY - трехзначное алфавитное сокращенное название дня недели
DAY - полное название дня

Элементы, которые задают формат части даты, обозначающей время.
HH24:MI:SS AM 15:45:32 PM
Символьные строки добавляются в кавычках.
DD " of " MONTH 12 of OCTOBER
Числовые суффиксы используются для вывода числительных прописью.
ddspth fourteenth

Слайд 16

А.М. Гудов Текущий год 1995 1995 2001 2001 Заданная дата 27-OCT-95

А.М. Гудов

Текущий год
1995
1995
2001
2001

Заданная дата
27-OCT-95
27-OCT-17
27-OCT-17
27-OCT-95

Формат RR
1995
2017
2017
1995

Формат YY
1995
1917
2017
2095

Формат даты RR

Слайд 17

А.М. Гудов Функция TO_CHAR с числами 9 - цифра. 0 -

А.М. Гудов

Функция TO_CHAR с числами


9 - цифра.
0 - вывод нуля.
$ -

плавающий знак доллара.
L - плавающий символ местной валюты
. - вывод десятичной точки.
, - вывод разделителя троек цифр.

TO_CHAR(number, 'fmt')

Форматы, используемые с функцией TO_CHAR для вывода символьного значения в виде числа

Слайд 18

А.М. Гудов Функция TO_CHAR с числами Выходная строка, состоящая из символов

А.М. Гудов

Функция TO_CHAR с числами

Выходная строка, состоящая из символов “#”, означает,

что в модели формата недостаточно символов слева от десятичной точки.
Сервер Oracle7 округляет десятичные значения, которые хранятся в базе данных, в соответствии с заданной моделью формата.

SQL> SELECT 'Order '||TO_CHAR(id)||
2 ' was filled for a total of '
3 ||TO_CHAR(total,'fm$9,999,999')
4 FROM s_ord
5 WHERE ship_date = '21-SEP-92';

Слайд 19

А.М. Гудов Функции TO_NUMBER и TO_DATE Преобразование строки символов в числовой

А.М. Гудов

Функции TO_NUMBER и TO_DATE

Преобразование строки символов в числовой формат с

помощью функции TO_NUMBER:

TO_NUMBER(char)

Преобразование строки символов в формат даты с помощью функции TO_DATE:
TO_DATE ('10 September 1992', dd Month YYYY')
Использование элементов формата.

TO_DATE(char[, 'fmt'])

Слайд 20

А.М. Гудов Вложенные однострочные функции Однострочные функции могут быть вложены на

А.М. Гудов

Вложенные однострочные функции

Однострочные функции могут быть вложены на любую глубину.
Вложенные

функции вычисляются от самого глубокого уровня к внешнему.

F3(F2(F1(col,arg1),arg2),arg3)

Step 1 = Result 1

Step 2 = Result 2

Step 3 = Result 3

Слайд 21

А.М. Гудов Вложенные функции 1. Вычисление внутренней функции для преобразования числового

А.М. Гудов

Вложенные функции

1. Вычисление внутренней функции для преобразования числового значения в строку

символов: Результат1=TO_CHAR(manager_id)
2. Вычисление внешней функции для замены неопределенного значения текстовой строкой: NVL(Результат1,'No Manager')

SQL> SELECT last_name,
2 NVL(TO_CHAR(manager_id),'No Manager')
3 FROM s_emp
4 WHERE manager_id IS NULL;

SQL> SELECT TO_CHAR(NEXT_DAY(ADD_MONTHS
2 (date_ordered,6), 'FRIDAY'),
3 'fmDay, Month ddth, YYYY')
4 "New 6 Month Review"
5 FROM s_ord
6 ORDER BY date_ordered;

1. Вычисление внутренней функции: Result1=ADD_MONTHS(date_ordered,6)
2. Вычисление следующей функции: Result2=NEXT_DAY(Result1,'FRIDAY')
3. Вычисление внешней функции: Result3=TO_CHAR(Result2,'fmDay, Month ddth, YYYY')

Слайд 22

А.М. Гудов Заключение Однострочные функции могут быть вложены на любую глубину.

А.М. Гудов

Заключение

Однострочные функции могут быть вложены на любую глубину.
Однострочные функции работают

с символьными, числовыми данными и данными типа DATE.
К функциям преобразования относятся TO_CHAR, TO_DATE и TO_NUMBER.
SYSDATE — псевдостолбец, используемый для вывода текущей даты и времени.
DUAL — фиктивная таблица в базе данных.
Слайд 23

А.М. Гудов Практическое занятие (обзор) Составление запросов, требующих использования числовых, символьных

А.М. Гудов

Практическое занятие (обзор)

Составление запросов, требующих использования числовых, символьных функций и

функций для работы с датами.
Использование конкатенации с функциями.
Составление запросов, нечувствительных к регистру, для проверки полезности символьных функций.
Вычисление продолжительности работы служащего в месяцах и годах.
Определение даты аттестации служащего.