Использование функций преобразования и условных выражений

Содержание

Слайд 2

Цели Изучив материал этого занятия, вы сможете: Описывать различные типы функций

Цели

Изучив материал этого занятия, вы сможете:
Описывать различные типы функций

преобразования, доступных в SQL
Использовать функции преобразования TO_CHAR, TO_NUMBER и TO_DATE
Применять условные выражения в инструкции SELECT
Слайд 3

План занятия Неявное и явное преобразование типов данных Функции TO_CHAR, TO_DATE

План занятия

Неявное и явное преобразование типов данных
Функции TO_CHAR, TO_DATE

и TO_NUMBER
Вложенные функции
Функции общего назначения:
NVL
NVL2
NULLIF
COALESCE
Условные выражения:
CASE
DECODE
Слайд 4

Функции преобразования Неявное преобразование типов данных Явное преобразование типов данных Преобразование типов данных

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

Неявное преобразование
типов данных

Явное преобразование
типов данных

Преобразование


типов данных
Слайд 5

Неявное преобразование типов данных В выражениях сервер Oracle может автоматически преобразовывать

Неявное преобразование типов данных

В выражениях сервер Oracle может автоматически преобразовывать

данные следующих типов:

NUMBER

VARCHAR2 или CHAR

DATE

VARCHAR2 или CHAR

В

Из

Слайд 6

Неявное преобразование типов данных При оценке выражений сервер Oracle может автоматически

Неявное преобразование типов данных

При оценке выражений сервер Oracle может автоматически

преобразовывать данные следующих типов:

VARCHAR2 или CHAR

NUMBER

VARCHAR2 или CHAR

DATE

В

Из

Слайд 7

Явное преобразование типов данных число символ TO_CHAR TO_NUMBER дата TO_CHAR TO_DATE

Явное преобразование типов данных

число

символ

TO_CHAR

TO_NUMBER

дата

TO_CHAR

TO_DATE


Слайд 8

Явное преобразование типов данных число символ TO_CHAR TO_NUMBER дата TO_CHAR TO_DATE

Явное преобразование типов данных

число

символ

TO_CHAR

TO_NUMBER

дата

TO_CHAR

TO_DATE

Слайд 9

Явное преобразование типов данных число символ TO_CHAR TO_NUMBER дата TO_CHAR TO_DATE

Явное преобразование типов данных

число

символ

TO_CHAR

TO_NUMBER

дата

TO_CHAR

TO_DATE


Слайд 10

План занятия Неявное и явное преобразование типов данных Функции TO_CHAR, TO_DATE

План занятия

Неявное и явное преобразование типов данных
Функции TO_CHAR, TO_DATE

и TO_NUMBER
Вложенные функции
Функции общего назначения:
NVL
NVL2
NULLIF
COALESCE
Условные выражения:
CASE
DECODE
Слайд 11

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

Использование функции TO_CHAR с датами

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

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

TO_CHAR(дата, 'модель_формата')

Слайд 12

Элементы модели формата даты Трехбуквенное сокращение для дня недели DY Полное

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

Трехбуквенное сокращение для дня недели

DY

Полное

наименование дня недели

DAY

Двузначный номер месяца

MM

Полное наименование месяца

MONTH

Трехбуквенное сокращение для месяца

MON

Номер дня месяца

DD

Полный порядковый номер года

YYYY

Год, прописью (на английском языке)

YEAR

Результат

Элемент

Слайд 13

Слайд 14

Элементы модели формата даты Элементы времени форматируют ту часть даты, которая

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

Элементы времени форматируют ту часть даты, которая

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

DD "of" MONTH

12 of OCTOBER

ddspth

fourteenth

HH24:MI:SS AM

15:45:32 PM

Слайд 15

Слайд 16

SELECT last_name, TO_CHAR(hire_date, 'fmDD Month YYYY') AS HIREDATE FROM employees; Использование функции TO_CHAR с датами …

SELECT last_name,
TO_CHAR(hire_date, 'fmDD Month YYYY')
AS HIREDATE
FROM

employees;

Использование функции TO_CHAR с датами


Слайд 17

Использование функции TO_CHAR с числами Вот некоторые элементы форматирования, которые можно

Использование функции TO_CHAR с числами


Вот некоторые элементы форматирования, которые

можно использовать с функцией TO_CHAR для отображения чисел в виде строк символов:

Печать десятичной точки

.

Печать запятой как разделителя групп разрядов

,

Размещение плавающего символа доллара

$

Использование плавающего локального символа валюты

L

Представление числа

9

Принудительное отображение нуля

0

Результат

Элемент

TO_CHAR(число, 'модель_формата')

Слайд 18

Слайд 19

SELECT TO_CHAR(salary, '$99,999.00') SALARY FROM employees WHERE last_name = 'Ernst'; Использование функции TO_CHAR с числами

SELECT TO_CHAR(salary, '$99,999.00') SALARY
FROM employees
WHERE last_name = 'Ernst';

Использование

функции TO_CHAR с числами
Слайд 20

Использование функций TO_NUMBER и TO_DATE Преобразование строки символов в числовой формат

Использование функций TO_NUMBER и TO_DATE

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

при помощи функции TO_NUMBER:
Преобразование строки символов в формат даты при помощи функции TO_DATE:
Для этих функций предусмотрен модификатор fx. Этот модификатор определяет точное соответствие символьного аргумента и модели формата даты функции TO_DATE.

TO_NUMBER(строка[, 'модель_формата'])

TO_DATE(строка[, 'модель_формата'])

Слайд 21

Слайд 22

Использование функций TO_CHAR и TO_DATE с форматом даты RR Чтобы найти

Использование функций TO_CHAR и TO_DATE с форматом даты RR

Чтобы найти

сотрудников, нанятых на работу ранее 1990 года, используйте формат даты RR, который даст одинаковые результаты независимо от того, выполнялась ли команда в 1999 году или сейчас:

SELECT last_name, TO_CHAR(hire_date, 'DD-Mon-YYYY')
FROM employees
WHERE hire_date < TO_DATE('01-Jan-90','DD-Mon-RR');

Слайд 23

План занятия Неявное и явное преобразование типов данных Функции TO_CHAR, TO_DATE

План занятия

Неявное и явное преобразование типов данных
Функции TO_CHAR, TO_DATE

и TO_NUMBER
Вложенные функции
Функции общего назначения:
NVL
NVL2
NULLIF
COALESCE
Условные выражения:
CASE
DECODE
Слайд 24

Вложенные функции Уровень вложенности однострочных функций не ограничен. Вложенные функции выполняются

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

Уровень вложенности однострочных функций не ограничен.
Вложенные функции выполняются

в направлении от нижнего уровня к верхнему.

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

Шаг 1 = Результат 1

Шаг 2 = Результат 2

Шаг 3 = Результат 3

Слайд 25

SELECT last_name, UPPER(CONCAT(SUBSTR (LAST_NAME, 1, 8), '_US')) FROM employees WHERE department_id = 60; Вложенные функции

SELECT last_name,
UPPER(CONCAT(SUBSTR (LAST_NAME, 1, 8), '_US'))
FROM employees
WHERE

department_id = 60;

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

Слайд 26

План занятия Неявное и явное преобразование типов данных Функции TO_CHAR, TO_DATE

План занятия

Неявное и явное преобразование типов данных
Функции TO_CHAR, TO_DATE

и TO_NUMBER
Вложенные функции
Функции общего назначения:
NVL
NVL2
NULLIF
COALESCE
Условные выражения:
CASE
DECODE
Слайд 27

Функции общего назначения Перечисленные ниже функции работают с любыми типами данных,

Функции общего назначения

Перечисленные ниже функции работают с любыми типами данных,

в том числе с неопределенными значениями NULL:
NVL (expr1, expr2)
NVL2 (expr1, expr2, expr3)
NULLIF (expr1, expr2)
COALESCE (expr1, expr2, ..., exprn)
Слайд 28

Функция NVL Преобразует значение NULL в текущее значение: Типы данных, которые

Функция NVL

Преобразует значение NULL в текущее значение:
Типы данных, которые

можно использовать, – это даты, строки и числа.
Типы данных должны соответствовать:
NVL(commission_pct,0)
NVL(hire_date,'01-JAN-97')
NVL(job_id,'Пока без должности')
Слайд 29

SELECT last_name, salary, NVL(commission_pct, 0), (salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SAL FROM

SELECT last_name, salary, NVL(commission_pct, 0),
(salary*12) + (salary*12*NVL(commission_pct, 0)) AN_SAL


FROM employees;

Использование функции NVL


1

1

2

2

Слайд 30

SELECT last_name, salary, commission_pct, NVL2(commission_pct, 'SAL+COMM', 'SAL') income FROM employees WHERE

SELECT last_name, salary, commission_pct,
NVL2(commission_pct,
'SAL+COMM', 'SAL') income
FROM

employees WHERE department_id IN (50, 80);

Использование функции NVL2

1

2

2

1

Слайд 31

SELECT first_name, LENGTH(first_name) "expr1", last_name, LENGTH(last_name) "expr2", NULLIF(LENGTH(first_name), LENGTH(last_name)) result FROM

SELECT first_name, LENGTH(first_name) "expr1",
last_name, LENGTH(last_name) "expr2",
NULLIF(LENGTH(first_name), LENGTH(last_name))

result
FROM employees;

Использование функции NULLIF


1

2

3

1

2

3

Слайд 32

Использование функции COALESCE По сравнению с функцией NVL у функции COALESCE

Использование функции COALESCE

По сравнению с функцией NVL у функции COALESCE

есть преимущество – она может принимать несколько альтернативных значений.
Если первое выражение не равно NULL, функция COALESCE вернет его; в противном случае функция COALESCE будет применена к оставшимся выражениям.
Слайд 33

SELECT last_name, employee_id, COALESCE(TO_CHAR(commission_pct),TO_CHAR(manager_id), 'No commission and no manager') FROM employees; Использование функции COALESCE … …

SELECT last_name, employee_id,
COALESCE(TO_CHAR(commission_pct),TO_CHAR(manager_id),
'No commission and no manager')
FROM employees;


Использование функции COALESCE



Слайд 34

Слайд 35

План занятия Неявное и явное преобразование типов данных Функции TO_CHAR, TO_DATE

План занятия

Неявное и явное преобразование типов данных
Функции TO_CHAR, TO_DATE

и TO_NUMBER
Вложенные функции
Функции общего назначения:
NVL
NVL2
NULLIF
COALESCE
Условные выражения:
CASE
DECODE
Слайд 36

Условные выражения Позволяют использовать в инструкциях SQL логику IF-THEN-ELSE (ЕСЛИ...ТО...ИНАЧЕ) Применяются

Условные выражения

Позволяют использовать в инструкциях SQL логику IF-THEN-ELSE (ЕСЛИ...ТО...ИНАЧЕ)
Применяются

два метода:
выражение CASE
функция DECODE
Слайд 37

Выражение CASE Облегчает реализацию условных запросов, выполняя функции операторов IF-THEN-ELSE: CASE

Выражение CASE

Облегчает реализацию условных запросов, выполняя функции операторов IF-THEN-ELSE:

CASE

expr WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THEN return_expr2
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END
Слайд 38

SELECT last_name, job_id, salary, CASE job_id WHEN 'IT_PROG' THEN 1.10*salary WHEN

SELECT last_name, job_id, salary,
CASE job_id WHEN 'IT_PROG' THEN 1.10*salary


WHEN 'ST_CLERK' THEN 1.15*salary
WHEN 'SA_REP' THEN 1.20*salary
ELSE salary END "REVISED_SALARY"
FROM employees;

Использование выражения CASE

Облегчает реализацию условных запросов, выполняя функции операторов IF-THEN-ELSE:




Слайд 39

Функция DECODE Облегчает реализацию условных запросов, выполняя функции выражения CASE или

Функция DECODE

Облегчает реализацию условных запросов, выполняя функции выражения CASE или

операторов IF-THEN-ELSE:

DECODE(col|expression, search1, result1
[, search2, result2,...,]
[, default])

Слайд 40

SELECT last_name, job_id, salary, DECODE(job_id, 'IT_PROG', 1.10*salary, 'ST_CLERK', 1.15*salary, 'SA_REP', 1.20*salary,

SELECT last_name, job_id, salary,
DECODE(job_id, 'IT_PROG', 1.10*salary,
'ST_CLERK', 1.15*salary,


'SA_REP', 1.20*salary,
salary)
REVISED_SALARY
FROM employees;

Использование функции DECODE




Слайд 41

SELECT last_name, salary, DECODE (TRUNC(salary/2000, 0), 0, 0.00, 1, 0.09, 2,

SELECT last_name, salary,
DECODE (TRUNC(salary/2000, 0),
0, 0.00,

1, 0.09,
2, 0.20,
3, 0.30,
4, 0.40,
5, 0.42,
6, 0.44,
0.45) TAX_RATE
FROM employees
WHERE department_id = 80;

Использование функции DECODE

Отобразить ставку налога, применимую к каждому из сотрудников отдела 80:

Слайд 42

Заключение На этом занятии были изучены следующие темы: Изменение форматов отображения

Заключение

На этом занятии были изучены следующие темы:
Изменение форматов отображения

дат при помощи функций
Преобразование типов данных столбцов при помощи функций
Использование функций NVL
Использование логики IF-THEN-ELSE и других условных выражений в инструкции SELECT
Слайд 43

Упражнение 4: обзор Упражнение охватывает следующие темы: Создание запросов, использующих функции

Упражнение 4: обзор

Упражнение охватывает следующие темы:
Создание запросов, использующих функции

TO_CHAR, TO_DATE и другие функции обработки дат
Создание запросов, использующих условные выражения, такие как DECODE и CASE
Слайд 44

Слайд 45