Выбрать главу

T0_CHAR(12345.67, ' U99,999.99’ ) $12,345.67

T0_CHAR(12345.67, ‘ 99999V99’ ) 1234567

Если попытаться поместить в выходную строку и отформатировать

число, которое содержит слишком много цифр для предлагаемого формата,

функция T0_CHAR() возвратит вам строку «диезов» (#). Например:

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

П SELECT TO_CHAR(12345678.90, ’99,999.99’)

FROM dual;

T0_CHAR(12

##########

Символы # возвращаются функцией T0_CHAR(), потому что в числе

12345678.90 содержится больше цифр, чем позволяет формат 99,999.99.

Конечно, можно использовать функцию T0_CHAR() для конвертирования

содержащих числа столбцов в строки. Так, например, в следующем запросе

функция T0_CHAR() используется для конвертирования столбца price

таблицы products в строку:

П SELECT product_id, ‘The price of this product is’ ||

T0_CHAR(price, ‘$99,999.99’)

FROM products

WHERE product_id < 5;

PR0DUCT_ID 1THEPRICEOFTHISPRODUCTIS’ ||T0_CHAR(

1 The p r ic e o f t h is p roduct i s $19.95

2 The p r ic e o f t h is product i s $30.00

3 The p r ic e o f t h is product i s $25.99

4 The p r ic e o f t h is product i s $13.95

T O _ N U M B E R ( )

Функция T0_NUMBER(x [, формат]) используется для конвертирования строки

х в число. Можно представить необязательную строку формат, указывающую

на формат входной строки х. Строка формат может иметь те же самые

параметры, которые были описаны в таблице 4.4.

В следующем примере строка 970.13 конвертируется в число при помощи

функции T0_NUMBER():

□ SELECT T0_NUMBER('970.13’)

FROM dual;

T0_NUMBER(‘ 970.13’ )

970.13

В следующем примере строка 970.13 с помощью функции T0_NUMBER ()

конвертируется в число, а затем к результату добавляется 25.5:

П SELECT T0_NUMBER(‘970.13’) + 25.5

FROM dual;

T0_NUMBER(‘ 970.13’ ) +25.5

995.63

В следующем примере строка -$12,345.67 конвертируется в число с помощью

строки формата $99,999.99, передаваемой функции T0_NUMBER():

114 Глава 4

□ SELECT TO_NUMBER(‘ -$1 2 ,3 4 5 .6 7 ’ , '$ 9 9 ,9 9 9 .9 9 ’ )

FROM dual;

T0_NUMBER(‘ -$12,345.67’ , ‘ $99,999.99’ )

-12345.67

C A S T ()

Функция CAST( x AS тип) используется для конвертирования х в совместимый

тип базы данных, указанный параметром тип. В следующей таблице

указаны допустимые преобразования типов (такие преобразования отмечены

X): ____________________________________________________

ИЗ

В

BINARY,

FLOAT

BINARY,

DOUBLE

CHAR

VARCHAR2

NUMBER DATE

TIMESTAMP

INTERVAL

RAWROWID

UROWID

NCHAR

NVARCHAR2

BINARY_FL0AT

BINARY,

DOUBLE

X X X X

CHAR

VARCHAR2

X X X X X X

NUMBER X X X X

DATE

TIMESTAMP

INTERVAL

X X

RAW X X

ROWID UROWID X X

NCHAR

NVARCHAR2

X X X X X X

В следующем примере продемонстрировано использование CAST() для

преобразования буквенных значений в указанные типы:

□ SELECT

CAST(12345.67 AS VARCHAR2(10)),

CAST( ‘ 9A4F' AS RAW(2)),

CASTC 05-JUL-07’ AS DATE),

CAST(12345.678 AS NUHBER(10,2))

FROM dual;

CAST(12345 CAST CAST(’ 05- CAST(12345.678ASNUMBER(10, 2))

12345.67 9A4F 05-JUL-07 12345.68

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

другой, как показано в примере ниже:

□ SELECT

CAST(price AS VARCHAR2(10)),

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

CAST(price + 2 AS NUMBER(7,2)),

CAST(price AS BINARY_DOUBLE)

FROM products

WHERE product_id =1;

CAST(PRICE CAST(PRICE+2ASNUMBER(7, 2)) CAST( PRICEASBINARY_DOUBLE)

19.95 21.95 1.99E+001

В Главе 5 приведены дополнительные примеры, которые демонстрируют

использование CAST() для конвертирования дат, времени и интервалов.

Также в Главе 13 показано, как использовать CAST() для конвертирования

коллекций.

Функции с регулярными выражениями

В этом разделе вы познакомитесь с регулярными выражениями и связанными

с ними функциями базы данных Oracle. Эти функции позволяют вам

искать шаблоны символов в строках. Например, есть такая последовательность

лет:

□ 1965

1968

1971

1970

И вы хотите получить годы с 1965 по 1968 включительно. Это можно

сделать с помощью следующего регулярного выражения:

□ ~196[5-8]$

В регулярном выражении содержится некоторое количество метасимволов.

В этом примере метасимволами являются Л, [5-8] и $. Метасимвол

Л обозначает начало строки; [5-8] указывает на символы в интервале от 5

до 8; $ отмечает конечный символ строки. Следовательно, Л196 означает

строку, которая начинается с символа 196, а [5-8]$ - строку, завершающуюся

символами 5, 6, 7 или 8. Таким образом, критерию Л196[5-8]$ соответствуют

строки 1965, 1966, 1967 и 1968, эти годы вы хотите получить

из списка.

В следующем примере используется строка, содержащая цитату из трагедии

«Ромео и Джульетта» Шекспира:

□ But, soft! What light through younder window breaks?

Предположим, что нужно выделить подстроку light. Этого можно добиться,

применив к строке с цитатой следующее регулярное выражение: