Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
OraLessons-I / Les-03-Using Single-Row Functions.doc
Скачиваний:
21
Добавлен:
20.03.2015
Размер:
311.81 Кб
Скачать

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 определяет следующие символы при преобразовании:

  1. знак отделения десятичных разрядов;

  2. знак отделения групп символов (например, тысяч: 100,000.00);

  3. знак обозначения национальной валюты;

  4. знак обозначения валюты.

Если параметры 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

Соседние файлы в папке OraLessons-I