我在转换VARCHAR2
信息时遇到了一些麻烦,例如:
到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'
)都将返回相同的错误。
我在这里做错了什么?显然我在这里丢失了一些东西,但我不知道是什么。
答案 0 :(得分:0)
我发现了问题。我需要将掩码作为参数传递给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;
适用于不同大小的数字。