2017-06-12 696 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

相關問題