db2 8.2中DECIMAL乘法运算的精度问题.

JYSVIP 2014-10-23 03:49:54
下记SQL语句发生了算术溢出.是什么原因呢?

select DECIMAL(1,31,20) * DECIMAL(1,8,4) as t1,
DECIMAL(1,31,20) * DECIMAL(1,8,4) * DECIMAL(1,8,4) as t2,
DECIMAL(1,31,20) * DECIMAL(1,8,4) * DECIMAL(1,8,4) * DECIMAL(1,8,4) as t3
from SYSIBM.SYSDUMMY1 ;
------------------------------------------------------------------------

T1 T2 T3
--------------------------------- --------------------------------- ---------------------------------
SQL0802N 发生算术溢出或其他算术异常。 SQLSTATE=22003


我检查了一下他的数据类型,搞不懂他的精度为什么会这样?

-------------------------------输入的命令-------------------------------
DESCRIBE
select DECIMAL(1,31,20) * DECIMAL(1,8,4) as t1,
DECIMAL(1,31,20) * DECIMAL(1,8,4) * DECIMAL(1,8,4) as t2,
DECIMAL(1,31,20) * DECIMAL(1,8,4) * DECIMAL(1,8,4) * DECIMAL(1,8,4) as t3
from SYSIBM.SYSDUMMY1

------------------------------------------------------------------------

SQLDA 信息

sqldaid : SQLDA sqldabc: 896 sqln: 20 sqld: 3

列信息

sqltype sqllen sqlname.data sqlname.length
-------------------- ------ ------------------------------ --------------
484 DECIMAL 31,24 T1 2
484 DECIMAL 31,28 T2 2
484 DECIMAL 31,31 T3 2
...全文
1127 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
用BIGDECIMAL转换其结果后看看!

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧