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

发布于 2024-11-17 16:12:22 字数 498 浏览 1 评论 0原文

我有以下 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 的含义的信息。

如果你能给出一些带有边界条件的例子就好了。

I have got the following 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$

Sometimes this UDF throws Data truncation error.
I can resolve the issue but the before even that I want some information regarding the Decimal data type and the significance of 10, 4 in the parameters.

It would be good if you give some examples with the boundary conditions.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

病女 2024-11-24 16:12:22

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

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

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

顺便说一句,如果您询问 DECIMAL (x, y) 记录中的 xy,则:

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

参考文献:

10, 4 means 6 digits (integer part) before point and 4 after (fractional part).

So the biggest possible number you can return is 999999.9999

In your particular case it is not possible to say what values are boundary for x and/or y, but you can check if the return value (currencyval) is out of -999999.9999 .. 999999.9999 range.

Btw, if you're asking about x and y in DECIMAL (x, y) records, then:

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

References:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文