Попробуйте:
TO_NUMBER('0,22', '9D99')
В отличие от буквенной запятой, D
будет соответствовать только десятичному разделителю. Так что, если это не удастся, ваш десятичный разделитель, вероятно, .
, а не ,
.
Вы можете использовать эту команду, чтобы увидеть десятичный разделитель и разделитель тысяч:
select value from nls_session_parameters
where parameter = 'NLS_NUMERIC_CHARACTERS'
Если это возвращает .,
, запятая - это ваш разделитель тысяч.
Чтобы изменить разделитель для одного запроса, вы можете:
select TO_NUMBER('0,22','9D99','nls_numeric_characters=,.') from dual;