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

Use*_*034 3 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$$
Run Code Online (Sandbox Code Playgroud)

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

如果你给出边界条件的一些例子会很好.

zer*_*kms 8

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

所以你可以回归的最大数量是 999999.9999

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

顺便说一句,如果你问xyDECIMAL (x, y)记录,那么:

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

参考文献: