Конвертировать VARCHAR в NUMBER с десятичной дробью в Oracle - PullRequest
0 голосов
/ 07 мая 2019

У меня возникли проблемы с преобразованием VARCHAR2 информации, например:

  • -111.21
  • 11.11
  • -51.146610399175472

до NUMBER.Я хочу сохранить эти цифры в столбце NUMBER(19,16).В основном это значения координат (широта и долгота).

Я уже пробовал разные команды с разными значениями:

select cast('-111.21' as NUMBER) from dual
select cast('-111.21' as decimal) from dual
select cast('111.21' as decimal) from dual
select to_number('-1.1') from dual
select to_decimal('-1.1') from dual

Но я всегда получаю сообщение об ошибке:

Указанный номер недействителен

Этот SQL:

select to_number('-134.33','099.99') from dual;

Работает, но любое изменение номера (например, изменение '-34.33') возвращает ту же ошибку.

Что я здесь не так делаю?Очевидно, я что-то здесь упускаю, но не могу понять, что.

1 Ответ

0 голосов
/ 07 мая 2019

Я нашел проблему. Мне нужно передать маску в качестве параметра функции to_number. Нравится '999.999999999999999'

Итак:

select to_number('90.79493','999.999999999999999') from dual;
select to_number('90.146610399175472','999.999900000000000') from dual;
select to_number('90.34234324','999.999999999999999') from dual;

работает для разного размера чисел.

...