TO_NUMBER & NLS_NUMERIC_CHARACTERS [:|||||:]

тест1
Дата: 23.11.2009 15:42:59
Посоветуйте, пожалуйста.
select TO_NUMBER ('42.09','999999D99', ' NLS_NUMERIC_CHARACTERS = ''.,''')  from dual
результат 42.09
select TO_NUMBER ('42.09','999999D99', ' NLS_NUMERIC_CHARACTERS = '',.''')  from dual
результат 4209

Т.Е. от порядка следования разделителя в NLS_NUMERIC_CHARACTERS зависит результат.
Требуется, чтобы на выходе было число 42,09.


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

Буду благодарна, если кто-нибудь поделится опытом как это побороть.
Спасибо!
_Alex_SMIRNOV_
Дата: 23.11.2009 15:46:56
почитайте о NLS_NUMERIC_CHARACTERS в доке... первый символ это десятичный разделитель, второй разделитель груп... посмотрите еще раз на ваши запросы и все станет понятно..
andrey_anonymous
Дата: 23.11.2009 15:48:32
Не от порядка, а от значения.
В первом случае десятичный разделитель - точка, групповой - запятая.
Во втором - наоборот.
Отсюда и результат.
Строчку распространить проще простого: как number или числовой литерал.
suPPLer
Дата: 23.11.2009 15:49:54
тест1,

а что Вам непонятно? В первом случае получаем дробное число (точка - разделитель целой и дробной части в строке). Во втором - целое число (точка - разделитель групп).
тест1
Дата: 23.11.2009 15:49:58
спасибо большое!