преобразование строки в число

padavan
Дата: 12.03.2007 13:29:18
Есть varchar2 строка в виде '000000000001748288'. Надо преобразовать в формат 17,482.88. Пока хватило только на следующий код:

select to_char(substr(to_char(to_number('000000000001015911')),1, 
length(to_char(to_number('000000000001015911')))-2 )||','||
substr(to_char(to_number('000000000001015911')),-2,2),'FM999,999,999.99') as s from dual;

Можно придумать что-нибудь более элегантное?

И второй вопрос: в 6-ых формсах при попытке присвоить переменной это значение вываливается ошибка -

too many declarations of 'TO_CHAR' match this call
iV@n
Дата: 12.03.2007 13:40:01
немного короче
select to_char(to_number('000000000001015911')/100,'FM999,999,999.99') as s from dual;
Elic
Дата: 12.03.2007 13:40:02
to_char('000000000001015911' / 100, 'FM999,999,999.99')


padavan
too many declarations of 'TO_CHAR' match this call:
to_char(substr
padavan
Дата: 12.03.2007 13:47:38
iV@n
немного короче
select to_char(to_number('000000000001015911')/100,'FM999,999,999.99') as s from dual;


ок, спасибо!!! помогло. и ошибка в формсах уже не появляется.
slobodyan_ury
Дата: 12.03.2007 13:48:24
padavan

Можно придумать что-нибудь более элегантное?


select to_char('000000000001748288'/100,'FM999,999,999.99') as s from dual;
Elic
Дата: 12.03.2007 13:54:33
orawish
Дата: 12.03.2007 13:59:27
padavan
select to_char(substr(to_char(to_number('000000000001015911')),1, 
length(to_char(to_number('000000000001015911')))-2 )
||','||
substr(to_char(to_number('000000000001015911')),-2,2),'FM999,999,999.99') as s from dual;

Кстати - в исходном коде - ошибка тут (точка должна быть - и формсы не виноватые :)
padavan
Дата: 12.03.2007 14:27:19
orawish
padavan
select to_char(substr(to_char(to_number('000000000001015911')),1, 
length(to_char(to_number('000000000001015911')))-2 )
||','||
substr(to_char(to_number('000000000001015911')),-2,2),'FM999,999,999.99') as s from dual;

Кстати - в исходном коде - ошибка тут (точка должна быть - и формсы не виноватые :)


SQL> select to_char(substr(to_char(to_number('000000000001015911')),1, length(to_char(to_number('000000000001015911')))-2 )||','||substr(to_char(to_number('000000000001015911')),-2,2),'FM999,999,999.99') as s from dual;

S
----------
10,159.11

SQL> select * from nls_session_parameters;

PARAMETER VALUE
------------------------------ ----------------------------------------
NLS_LANGUAGE RUSSIAN
NLS_TERRITORY CIS
NLS_CURRENCY ð.
NLS_ISO_CURRENCY CIS
NLS_NUMERIC_CHARACTERS ,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD.MM.RR
NLS_DATE_LANGUAGE RUSSIAN
NLS_SORT RUSSIAN
NLS_TIME_FORMAT HH24:MI:SSXFF
NLS_TIMESTAMP_FORMAT DD.MM.RR HH24:MI:SSXFF
NLS_TIME_TZ_FORMAT HH24:MI:SSXFF TZR
NLS_TIMESTAMP_TZ_FORMAT DD.MM.RR HH24:MI:SSXFF TZR
NLS_DUAL_CURRENCY ð.
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE

17 rows selected

так что все было правильно

еще раз спасибо за помощь!!!
orawish
Дата: 12.03.2007 14:40:31
padavan
NLS_NUMERIC_CHARACTERS ,
..так что все было правильно

Ну, что сказать? При такой веселой жизни to_number ни неявный (to_char(substr..)
ни бесформатный просто недопустим..
padavan
Дата: 12.03.2007 14:47:28
orawish
padavan
NLS_NUMERIC_CHARACTERS ,
..так что все было правильно

Ну, что сказать? При такой веселой жизни to_number ни неявный (to_char(substr..)
ни бесформатный просто недопустим..


А можно подробнее??? Чтоб понять точнее вчем были грабли.