cra*_*gtb 0 sql casting teradata
我在我的一个Teradata查询中遇到了计算问题.我将两个数相乘,但我得到一个"计算过程中出现数字溢出".运行查询时出错.我在两个字段上运行了一个类型,它们是DECIMAL(18,15)和DECIMAL(18,9).当我进行分割时,我尝试将它们都投射到DECIMAL(18,18),但它仍然抛出错误.这是计算.UNITS是18,15,PRICE是18,9.任何人都可以给我任何解决方法,如何解决这个问题?
cast(UNITS as DECIMAL(18,18))* cast(PRICE as DECIMAL(18,18)) as NEW_CALC
Run Code Online (Sandbox Code Playgroud)
谢谢,
克雷格
你使用错误的数据类型,一个DECIMAL(18,15)18位数字,其中15个是小数,所以最大值是999.999999999999999.
当你乘以两位小数时,小数位数加起来,NEW_CALC得到38位小数.做一个TYPE(cast(UNITS as DECIMAL(18,18))* cast(PRICE as DECIMAL(18,18))).
这将有效:
cast(UNITS as DECIMAL(38,15))* PRICE
Run Code Online (Sandbox Code Playgroud)
但是你最好将列的数据类型更改为类似(18,2)或(18,4),我认为没有人使用超过4位数的价格.
| 归档时间: |
|
| 查看次数: |
18688 次 |
| 最近记录: |