Как преобразовать дробную строку в число?
Имеется отрицательная дробная строка, которую я хочу перевести в number при помощи функции TO_NUMBER:
SELECT TO_NUMBER('-45516,51') FROM DUAL;
Однако, при выполнений выдается ошибка:
ORA-01722: invalid number
Каким образом можно конвертировать отрицательные дробные строки в числа?
Ответы (2 шт):
Как я выяснил позже, невозможна конвертация если в строке вместо "." используется ",".
Если в документе имеется такая строка, то нужно вначале поменять запятые на точки:
SELECT TO_NUMBER(REPLACE('-45516,51', ',', '.')) FROM test_table;
Это потому, что в национальных установках сессии стоит десятичный разделитель - точка:
show parameter nls_numeric_characters
NAME TYPE VALUE
---------------------- ------ -----
nls_numeric_characters string .,
select to_number ('-45516,51') num from dual;
ORA-01722: invalid number
В примере из документации показано как явно указать десятичный разделитель и разделитель троек цифр (тысячные разряды):
select to_number ('45516,51', 'FM99999D99' ,'nls_numeric_characters='',.''') num
from dual;
NUM
----------
-45516.51