2017-06-12 693 views
-2

我试图将一个数字转换为DECIMAL(10,2)。 如果我理解的很好,像“1234567890”这样的数字应该是有效的 DECIMAL(10,2)。 但是当我尝试投它,它会返回一个错误-413:DB2将转换为DECIMAL

“溢出或下溢OCCURRED过程中的数字数据类型转换”

这是SQL:

select CAST(1234567890 AS DECIMAL(10,2)) from SYSIBM.SYSDUMMY1; 

依我之见它的问题是它增加了两个零小数位, 因此总长度是12,这对于一个(10,2)是无效的数字。事实上,如果我尝试将它投射到(12,2),它就会起作用(显示“1234567890.00”)。

我不知道这是错误还是我做错了什么。 铸件(12,2)似乎并没有一个有效的选择,因为它会 接受像“1234567890.12”这不应该是有效的(10,2)的数字。

在此先感谢。

回答

3

DECIMAL data type是通过提供两个数字指定:

  1. 第一个整数是数字的精度;也就是总位数;它的范围可以从1到31.
  2. 第二个整数是数字的比例;也就是小数点右边的位数;它的范围可以从0到数字的精度。

在你的情况下,DECIMAL(10,2)表示总共10个数字,其中2个用于比例。 1234567890因此不适合,12345678.90会。

+0

谢谢你,我从XML totalDigits和参数fractionDigits的概念混合起来。我认为它以同样的方式工作,但它似乎没有 – Elrohir

相关问题