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. Этого можно добиться,
применив к строке с цитатой следующее регулярное выражение: