没有小数的货币栏:加十进制

时间:2017-08-24 18:20:17

标签: sql oracle casting decimal currency

我一直在检查没有小数空格的货币列。它是加载到Oracle数据库中的遗留系统的输出。

如果该字段有三个或更多数字,则右边三个空格应该有一个小数。

如果该值少于三个数字,则它应具有小数和前导零。

例如:

  • 2050应转换为2.050
  • 110应转换为.110
  • 50应转换为.050

我尝试使用强制转换,但收到错误'无效的数据类型。'

这是一个基本的选择声明:

    select 
    customer_id
    cast(ENDING_BALANCE as (decimal(10,3)) as Bal_1
    from Current_Balances

任何建议将不胜感激。

1 个答案:

答案 0 :(得分:2)

我认为您需要将其转换为数字并除以1000

SELECT CAST(CAST('2050' as INT)/1000 as DECIMAL(10,3)) FROM DUAL

如果你真的想让输出格式看起来像那样,你需要TO_CHAR它

SELECT LTRIM(TO_CHAR(CAST('2050' as INT)/1000, 'FM0.000'), '0') FROM DUAL