【问题标题】:convert varchar to decimal Oracle将 varchar 转换为十进制 Oracle
【发布时间】:2018-04-07 16:09:44
【问题描述】:

我想将 varchar 转换为十进制值

当我使用时

try_cast(unitPrice as decimal) as price_value

我收到错误无法输出到文件。值不是数字:java.lang.String

但是当我使用时

try_cast(unitPrice as integer ) as price_value

我收到十进制值的空值

是什么导致了这个错误?

【问题讨论】:

  • Oracle 中没有try_cast。而且Value is not a number: java.lang.String 也不是Oracle 错误消息(它们都以ORA- 开头)

标签: sql oracle type-conversion


【解决方案1】:

Oracle 有以下数值数据类型:

{ NUMBER [ (精度 [, 刻度]) ] | FLOAT [(精度)] | BINARY_FLOAT | BINARY_DOUBLE }

https://docs.oracle.com/cd/B28359_01/server.111/b28285/sqlqr06.htm#g999425

所以你应该尝试类似的东西

cast(unitPrice as float) as price_value

【讨论】:

  • 用花车赚钱不是一个好主意。数字将是一个更明智的选择
  • 可能。如果不了解更广泛的背景,就不可能在这种情况下说。很多时候,事物的货币价值可能小于 0.01,或者一个国家的最低货币单位。但是,如果排序的值是零售价,例如,那么您将是正确的。
  • 感谢您的回答澄清了很多!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-24
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多