Oracle提示无效数字

各位好,我想问个问题:Oracle从varchar2插入到number(8,3)数据,就是之前都能插入,这次因为数据里面有一个负数(-1697.8)了,最后就开始报无效数字的错误,于是想用to_number函数去转换成数值型,但是转完的数据小数点也被替换了,是这里的正则式写错了吗,能怎么改吗,因为数据没办法修改,
to_number(regexp_replace('-1699.8',[^0-9],'')),
像这样小数点就被转换为空了,数据最后变成了-16998了,如果想要保留小数点的话,正则式该怎么写呢,因为不用替换函数,直接用to_number也报错,感谢回复🙏🏻🙏🏻

可以使用类型转换保留两位小数,如果是三位小数下边 2 改为 3
cast(value as number(10,2))

to_number('-1699.8')

感谢大佬的帮助,今天问题解决了,我把语句复制到另一台电脑上的pl/sql,成功插入了,因为我有两个版本的sql,to_number('-1697.8')都不成功,但是远程的那台电脑是成功的,估计是我电脑的环境问题