没有小数的货币列:添加小数
Currency column with no decimals: add in decimal
我一直在查看没有小数位的货币列。它是加载到我们的 Oracle 数据库中的遗留系统的输出。
如果该字段有三个或更多数字,它应该在右边三个空格处有一个小数。
如果该值少于三个数字,则它应该有一个小数点和一个前导零。
例如:
- 2050 应转换为 2.050
- 110 应转换为 .110
- 50 应转换为 .050
我试过使用强制转换,但收到错误 'invalid datatype.'
这是一个基本的 select 语句:
select
customer_id
cast(ENDING_BALANCE as (decimal(10,3)) as Bal_1
from Current_Balances
如有任何建议,我们将不胜感激。
我认为你需要将其转换为一个数字并除以 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
我一直在查看没有小数位的货币列。它是加载到我们的 Oracle 数据库中的遗留系统的输出。
如果该字段有三个或更多数字,它应该在右边三个空格处有一个小数。
如果该值少于三个数字,则它应该有一个小数点和一个前导零。
例如:
- 2050 应转换为 2.050
- 110 应转换为 .110
- 50 应转换为 .050
我试过使用强制转换,但收到错误 'invalid datatype.'
这是一个基本的 select 语句:
select
customer_id
cast(ENDING_BALANCE as (decimal(10,3)) as Bal_1
from Current_Balances
如有任何建议,我们将不胜感激。
我认为你需要将其转换为一个数字并除以 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