十進位函數與運算子

十進位常值

使用 DECIMAL 'xxxxxxx.yyyyyyy' 語法來定義 DECIMAL 類型的常值。

常值的 DECIMAL 類型精確度會等於常值中的位數 (包括尾隨和前導零)。 小數位數會等於小數部分的位數 (包括尾隨零)。

常值範例

資料類型

DECIMAL '0'

DECIMAL(1)

DECIMAL '12345'

DECIMAL(5)

DECIMAL '0000012345.1234500000'

DECIMAL(20, 10)

二元算術十進位運算子

支援標準的數學運算子。 下表說明結果的精確度和縮放比例計算規則。 假設 x 的類型為 DECIMAL(xp, xs),而 y 的類型為 DECIMAL(yp, ys)

運算

結果類型精確度

結果類型縮放比例

x + y

x - y

min(38,
    1 +
      min(xs, ys) +
      min(xp - xs, yp - ys)
   )

max(xs, ys)

x * y

min(38, xp + yp)

xs + ys

x / y

min(38,
    xp + ys
       + max(0, ys-xs)
   )

max(xs, ys)

x % y

min(xp - xs, yp - ys) +
max(xs, bs)

max(xs, ys)

如果運算的數學結果無法使用結果資料類型的精確度和縮放比例精確表示,則會引發例外狀況 - 值超出範圍

當對具有不同縮放比例和精確度的十進位類型進行運算時,這些值會先強制轉換為通用的超類型。 對於接近最大可表示精確度 (38) 的類型,當其中一個運算元不適合通用超類型時,可能會導致「值超出範圍」錯誤。 例如,decimal(38, 0) 和 decimal(38, 1) 的通用超類型是 decimal(38, 1),但某些適合 decimal(38, 0) 的值無法表示為 decimal(38, 1)。

比較運算子

所有標準比較運算子和 BETWEEN 運算子都適用於 DECIMAL 類型。

一元十進位運算子

- 運算子會執行負運算。 結果的類型與引數的類型相同。