2.3.7.   Функции преобразования значений

  Преобразование в символьную строку — ТО_СНАІІ Т0_СНАк. (<значимое выражение>|,Символьный формат>])

• <значимое выражение > — числовое значение или значение типа дата-время;

• для числовых значений <символьный формат> должен иметь синтаксис 15]9[9][,9[9]], где Э — представление зна­ка числа (при отсутствии предполагается без отображения знака), 9 — представление цифр-знаков числового значе­ния (для каждого знакоместа). Символьный формат опре­деляет вид отображения чисел. По умолчанию для число­вых значений используется формат '999999.99';

• для значений типа дата-время <символьный формат> имеет вид (то есть вид отображения значений даты и вре­мени):

— в части даты

ТО-Моп-тУ 'ОП-Моп-їїїУ

'DD.MM.YY 'DD.MM.YYYY"

— в части времени

■НН24'

ИН24.Ш'

-HH24:MI:SS'

HH24:MI:SS.FF

ще: НН24 — часы в диапазоне от 0 до 24 S/FI — минуты SS — секунды

FF — тики (сотые доли секунды)

При выводе времени в качестве разделителя по умолчанию используется двоеточие (:), но при желании можно использо­вать любой другой символ.

Возвращаемое значение — символьное представление Зна­чимого выражения> в соответствии с заданным "символьным форматом> преобразования.

* Преобразование из символьного значения в числовое — TO_NUMBER

T0_NUMBER (Оначимое символьное выражение >)

При этом <значимое символьное выражение> должно зада­вать символьное значение числового типа.

• Преобразование символьной строки в дату — TO_DATE TCMDATE (Оначимое символьное выражение >[,<символьный формат>])

• <значимое символьное выражение> должно задавать сим­вольное значение типа дата-время;

• <символьный формат> должен описывать представление значения типа дата-время в <значимом символьном выра­жении>. Допустимые форматы (в том числе и формат по умолчанию) приведены выше.

Возвращаемое значение — <значимое символьное выраже­ние> во внутреннем представлении. Тип возвращаемого значе­ния — DATE.

Над значениями типа DATE разрешены следующие операции:

• бинарная операция сложения;

• бинарная операция вычитания.

В бинарных операциях один из операндов должен иметь значение отдельного элемента даты: только год, или только ме­сяц, или только день.

Например:

* при добавлении к дате '22.05.1998' пяти лет получится дата '22.05.2003';

* при добавлении к этой же дате девяти месяцев получится да­та '22.02.1998';

* при добавлении 10 дней получим '01.06.1998'.

При сложении двух полных дат, например, '22.05.1998' и '01.12.2000', результат непредсказуем.

Пример

Запрос

SELECTSURNAME,NAME,BIRTHDAY,

TO_CHAR (BIRTHDAY,     ЧЮ-IOJ-YYYY• ) , TO_CHAR (BIRTHDAY, 'DO.M4.YY') FRCM STUDENT;

вернет результат:

SURNAME

NAME

BIRTHDAY

 

 

Иванов

Иван

3/12/1982

З-дек-1982

3.12.82

Петров

Петр

1/12/1980

1-дек-1980

1.12.80

Сидоров

Вадим

7/06/1979

7-июн-1979

7.06.79

Кузнецов

Борис

8/12/1981

8-дек-1981

8.12.81

Зайцева

Ольга

1/05/1981

1-МЗЙ-1981

1.05.81

Павлов

Андрей

5/11/1979

5-ноя-1979

5.11.79

Котов

Павел

NULL

NULL

NULL

Лукин

Артем

1/12/1981

1-дек-1981

1.12.81

Петров

Антон

5/08/1981

5-авг-1981

5.08.81

Белкин

Вадим

7/01/1980

7-ЯНВ-1980

7.01.80

 

 

 

 

 

Функция CAST является средством явного преобразования дан­ных из одного типа в другой. Синтаксис этой команды имеет вид

сАзКзначимое выражение> AS <тип данных>

• <значимое выражение> должно иметь числовой или сим­вольный тип языка SQL (возможно, с указанием длины, точ­ности и масштаба) или быть NULL-значением;

■ любое числовое выражение может быть явно преобразовано в любой другой числовой тип;

• символьное выражение может быть преобразовано в любой числовой тип. При этом в результате символьного выраже­ния отсекаются начальные и конечные пробелы, а остальные символы преобразуются в числовое значение по правилам языка SQL;

• если явно заданная длина символьного типа недостаточна и преобразованное значение не размещается в нем. то ре­зультативное значение усекается справа;

• возможно явное преобразование символьного типа в сим­вольный с другой длиной. Если длина результата больше длины аргумента, то значение дополняется пробелами; если меньше, то усекается;

• NULL-значение преобразуется в NULL-значение соответству­ющего типа;

• числовое выражение может быть преобразовано в символь­ный тип.

Пример

SELECT CAST STUDENT_JD AS CHAR (10) FROM STUDENT;

Упражнения

l. Составьте запрос для таблицы STUDENT таким образом, чтобы вы­ходная таблица содержала один столбец, содержащий последова­тельность разделенных символом «;» (точка с запятой) значений всех столбцов этой таблицы, и при этом текстовые значения дол­жны отображаться прописными символами (верхний регистр), то есть быть представленными в следующем виде: 10;КУЗНЕ-ЦОВ;БОРИС;0;БРЯНСК;8/Т2/Т981;10.

2. Составьте запрос для таблицы STUDENT таким образом, чтобы вы­ходная таблица содержала всего один столбец в следующем виде: Б. КУЗНЕЦОВ;местожительства-БРЯНСК;родился-8.12.81.

3. Составьте запрос для таблицы STUDENT таким образом, чтобы вы­ходная таблица содержала всего один столбец в следующем виде: б.кузнецов; место   жительства-брянск; родился: 8-дек-1981.

4. Составьте запрос для таблицы STUDENT таким образом, чтобы вы­ходная таблица содержала всего один столбец в следующем виде: Борис Кузнецов родился в 1981 году.

5. Вывести фамилии, имена студентов и величину получаемых ими стипендий, при этом значения стипендий должны быть увеличены в 100 раз.

6. То же, что и в задаче 4, но только для студентов 1, 2 и 4-го курсов и таким образом, чтобы фамилии и имена были выведены пропис­ными буквами.

7. Составьте запрос для таблицы UNIVERSITYTaKHM образом, чтобы

выходная таблица содержала всего один столбец в следующем ви­де: Код-10;ВГУ-г. ВОГОНЕЖ;Рейтинг=296.

8. То же, что и в задаче 7, но значения рейтинга требуется округлить до первого знака (например, значение 382 округляется до 400).