- •Использование однострочных функций.
- •1. Функции языкаOracleSql.
- •2. Типы функций
- •3. Однострочные функции (Single-rowFunctions)
- •3.1 Символьные функции
- •3.1.2 Функции манипулирования символами
- •Instr(last_name, 'a') as "Contains 'a'?"
- •3.2 Числовые функции.
- •3.3 Работа с датами.
- •3.3.1 Арифметические операции с датами.
- •3.4 Функции для работы с датами.
- •3.5 Функции преобразования (Conversion Functions)
- •3.5.2 Явное преобразование типов.
- •3.5.6 Формат даты rr
- •3.6 Общие функции (GeneralFunctions)
- •3.6.1 Функция nvl.
- •3.6.2 Функция nvl2
- •3.7.2 Функция decode
3.5 Функции преобразования (Conversion Functions)
3.5.1 Неявное преобразование типов.
Операция присваивания будет успешной, если сервер Oracle сможет привеститип данных значения, расположенного справа от оператора присваивания, к типу переменной.
Исходный формат (значение) |
Новый формат (переменная) |
VARCHAR2 или CHAR |
NUMBER |
VARCHAR2 или CHAR |
DATE |
NUMBER |
VARCHAR2 |
DATE |
VARCHAR2 |
3.5.2 Явное преобразование типов.
Для преобразования значения из одного типа данных в другой Oracle SQL предлагает следующие функции:
Функция |
Назначение |
TO_CHAR(n [, fmt [, 'nlsparam' ] ]) |
Преобразует число n в строку символов VARCHAR2 в соответствие с моделью формата fmt. Параметр nlsparam определяет следующие символы при преобразовании:
Если параметры fmt и nlsparams не указаны, то будут использоваться параметры по умолчанию. |
TO_CHAR(dt [, fmt [, 'nlsparam' ] ]) |
Преобразует дату dt в строку символов VARCHAR2 в соответствие с моделью формата fmt. Параметр nlsparam устанавливает язык, на котором будут отображаться названия месяцев и дней. Если параметры fmt и nlsparams не указаны, то будут использоваться параметры по умолчанию. |
TO_NUMBER(expr [, fmt [, 'nlsparam' ] ]) |
Преобразует символьную строку expr, содержащую цифры, в число в соответствие с форматом fmt. Параметр nlsparam имеет тот же смысл, что и для функции TO_CHAR при преобразовании чисел. |
TO_DATE(char [, fmt [, 'nlsparam' ] ]) |
Преобразует символьную строку char, содержащую дату, в дату в соответствие с форматом fmt. Параметр nlsparam имеет тот же смысл, что и для функции TO_CHAR при преобразовании дат. |
3.5.3 Использование функции TO_CHAR с датами.
TO_CHAR(date, 'format_model')
где, модель формата format_model:
должна быть заключена в апострофы;
различает символы верхнего и нижнего регистра;
может включать любые разрешённые элементы формата даты;
использует элемент fm (fill mode)для удаления конечных пробелов и ведущих нулей.
Функция TO_CHARпозволяет преобразовать дату из стандартного формата DD-MON-YY в формат, который требуется в каждой конкретной задаче.
Элементы формата даты. | |
YYYY |
Полный год цифрами |
YEAR |
Год прописью (на английском языке!) |
MM |
Двузначное цифровое обозначение месяца |
MONTH |
Полное название месяца |
MON |
Трехзначное алфавитное сокращенное название месяца |
DY |
Трехзначное алфавитное сокращенное дня недели |
DAY |
Полное название дня недели |
DD |
Двузначное цифровое обозначение дня месяца |
D |
Номер дня в неделе |
DDD |
Номер дня в году |
WW или W |
Номер недели в году или месяце |
Дополнительные элементы формата даты.
Элементы формата даты: время. | |
AM или PM |
Индикатор «до полудня/после полудня» |
A.M. или P.M. |
Индикатор «до полудня/после полудня» - обозначение точками |
HH12 или HH24 |
Время суток в 12- или 24-часовом диапазоне |
MI |
Минуты (0-59) |
SS |
Секунды (0-59) |
SSSSS |
Секунды после полуночи (0-86399) |
Другие элементы формата даты.
Элемент |
Описание |
/ . , |
Знаки пунктуации выводятся в результате |
“of the“ |
Строка, указанная в двойных кавычках, выводится в результате |
Суффиксы для вывода чисел | |
TH |
Порядковый номер (например, DDTH для 4TH) |
SP |
Число прописью (например, DDSP для FOUR ) |
SPTH или THSP |
Порядковое число прописью (например, DDSPTH для FOURTH) |
Пример
SELECT
last_name,
TO_CHAR(hire_date, 'fmDDspth “of“ Month YYYY fmHH:MI:SS AM')
AS HIREATE
FROM employees;
3.5.4 Использование функции TO_CHAR с числами.
TO_CHAR(number, 'format_model')
Преобразуя число в символьный тип данных, можно использовать следующие элементы числового формата:
Элемент |
Описание |
9 |
Цифровой разряд (количество девяток определяет ширину поля вывода) |
0 |
Вывод ведущих нулей |
$ |
Плавающий символ доллара |
L |
Плавающий символ местной валюты |
. |
Десятичная точка в указанной позиции |
, |
Запятая в указанной позиции |
Пример
SELECT TO_CHAR(salary, '$99,999.00') SALARY
FROM employees
WHERE last_name = 'Ernst';
Примечание 1.
Если количество цифровых разрядов числа превышает количество разрядов, предусмотренных моделью формата, сервер Oracleвыводит вместо всего числа строку символов #.
Примечание 2.
Сервер Oracleокругляет хранимое десятичное значение до количества десятичных разрядов, заданного в модели формата.
Пример
SELECT to_char(12345.59, '999' )
FROM dual;
результат:
TO_C
----
####
3.5.5 Использование функций TO_NUMBER и TO_DATE.
Преобразование символьной строки в числовой формат:
TO_NUMBER(char [, 'format_model'])
Преобразование символьной строки в тип дата:
TO_DATE(char, ['format_model'])
Примечание: Выбираемая модель формата основывается на рассмотренных выше элементах формата.
В этих функциях можно использовать модификатор fx. В функцииTO_DATEон задаёт точное соответствие символьного аргумента и модели формата даты.
При использовании модификатора fxследует обратить внимание на следующее:
знаки пунктуации и текст, заключённый в кавычки, в символьном аргументе должны точно соответствовать (без учёта регистра) модели формата;
символьный аргумент не может содержать дополнительные пробелы. Если не используется модификатор fx, серверOracleигнорирует дополнительные пробелы;
числовые данные в символьном аргументе должны содержать такое же количество цифр, которое указано в модели формата. Если не используется модификатор fx, серверOracleигнорирует ведущие нули.
Пример
SELECT to_date('24 MAY 2005', 'fxDD MON YYYY')
FROMdual;
получим сообщениеоб ошибке:
select to_date('24 MAY 2005', 'fxDD MON YYYY') from dual
*
ERROR at line 1:
ORA-01843: not a valid month