【发布时间】:2019-08-20 16:46:16
【问题描述】:
在 Oracle 中我有这个代码:
regexp_replace(DESCRIPTION_FIELD, '[^0-9.]+', '')
效果很好,但现在我收到了错误:
ORA-01722“无效号码”。
删除小数可以解决这个问题,但会从返回值中删除小数。我猜最近添加了一些不良数据。解决方案?
【问题讨论】:
-
我无法reproduce your issue in this db fiddle。如果您能展示一些实际产生问题的示例数据,那就太好了。
-
Oracle 数据库中的小数点分隔符是什么?
-
这将是这样的:SELECT NVL(CAST(regexp_replace(DESCRIPTION_FIELD, '[^0-9.]+', '') AS NUMBER),0) FROM TABLE 返回 ORA -01722 错误。当我取出小数时,它运行良好。
-
感谢您的帮助。我真正想要得到的是:使用可以包含任何数据的文本描述字段,如果它包含一个可以是金额的浮点数,请获取它。如果我们的描述总是有一个浮点数就好了,但它没有。没有“$”符号或逗号,因此需要通过查找格式为“一些数字,一个小数,然后是两个数字”的数字来找到它。谢谢!
-
我不确定我们的小数分隔符是什么,抱歉。我是 58% 的 SQL 专家 :)
标签: sql regex oracle extract currency