我有以下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 会抛出数据截断错误。 我可以解决这个问题,但在此之前我需要一些关于十进制数据类型和参数中 10、4 的重要性的信息。
最好能给出一些边界条件的例子。
最佳答案
10, 4
表示点前 6 位(整数部分)和点后 4 位(小数部分)。
因此,您可以返回的最大可能数字是 999999.9999
在您的特定情况下,无法说出哪些值是 x
的边界和/或 y
, 但您可以检查返回值 ( currencyval
) 是否超出 -999999.9999 .. 999999.9999
范围。
顺便说一句,如果你问的是 x
和 y
在DECIMAL (x, y)
记录,然后:
-
x = 1..65
-
y = 0..30 && y <= x
引用资料:
关于mysql - MySQL 数据类型声明中 DECIMAL(x, y) 中 x 和 y 的边界值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6490013/