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

标签 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 会抛出数据截断错误。 我可以解决这个问题,但在此之前我需要一些关于十进制数据类型和参数中 10、4 的重要性的信息。

最好能给出一些边界条件的例子。

最佳答案

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

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

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

顺便说一句,如果你问的是 xyDECIMAL (x, y)记录,然后:

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

引用资料:

关于mysql - MySQL 数据类型声明中 DECIMAL(x, y) 中 x 和 y 的边界值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6490013/

相关文章:

c++ - 将地板截断为小数点后三位 C++

java - 十六进制字符数组转十进制

mysql - SQL - 返回每个字段的前 3 条记录

php - &lt;textarea&gt;和MYSQL在php中显示数据

php - 基于相同关键字显示结果的 SQL 查询

c - 两个二进制数异或的问题

swift - 字符串转十进制swift

python - 迁移不会创建新表

mysql - SQL If 语句/select into 存储过程

algorithm - 流式 pi 十进制数字生成器算法