字符串到双精度或十进制

String to double or decimal

如何将字符串转换为双精度或小数?在 Exact Online (REST API) 中,我尝试在字符串字段中使用十进制值进行计算。例如 items.netprice + items.notes。字段 items.notes 包含十进制值。 尝试将 castconvertfloatdecimal 结合使用。

我会使用如下解决方案:

select case
       when regexp_replace(c, '[^0-9.]', '', 1, 0, 'g') = c
       then to_number(c)
       else null
       end       
from   ( select '123.45' c
         from   dual@datadictionary
         union all
         select '123invalid.45' c
         from   dual@datadictionary
       )

caseregexp_replace 确保非数字返回为 null。如果认为有必要,您可能希望将其更改为错误。