MySQL数据类型声明中DECIMAL(x,y)中x和y的边界值是多少?

时间:2011-06-27 07:53:34

标签: mysql decimal

我有以下UDF

drop function if exists getCurrency$$

create function getCurrency(dt datetime, x decimal(19,4), y decimal(19, 4)) 
returns decimal(10,4) reads sql data
begin
     declare currencyval decimal(10,4);

     /* Some conditions */
     select case when dt = "2000-12-31" then 0 else round((x/y), 4) into currencyval;

     return currencyval;
end$$

有时此UDF会引发数据截断错误。 我可以解决这个问题,但之前我甚至想要一些有关Decimal数据类型和参数中10,4的重要性的信息。

如果你给出边界条件的一些例子,那将是件好事。

1 个答案:

答案 0 :(得分:7)

10, 4表示点前6位(整数部分)和后4(小数部分)。

因此,您可以返回的最大数字是999999.9999

在您的特定情况下,无法说明x和/或y的边界值是什么,但您可以检查返回值(currencyval)是否超出-999999.9999 .. 999999.9999范围。

顺便说一下,如果您在x条记录中询问yDECIMAL (x, y),那么:

  • x = 1..65
  • y = 0..30 && y <= x

参考文献: