MySQL以可变精度转换为DECIMAL

时间:2016-06-08 08:48:37

标签: mysql

我有一个MySQL函数,我可以像这样使用DECIMAL

DECLARE len INT;
SET len = 10;
CAST((COUNT(*) * 1.5) AS DECIMAL(len))

然而,当我运行它时,我收到错误

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'len)

我想要的是在AS DECIMAL()表达式中使用变量len。

1 个答案:

答案 0 :(得分:2)

MySQL不允许使用变量来定义数据,因此您不能使用变量来指示十进制数据类型的精度或比例。

您所能做的就是通过字符串连接创建相应的sql命令,并使用prepared statement发出它。

准备语句的唯一缺点是它们不是在函数的上下文中执行的。因此,如果您计划稍后在函数中使用结果,那么您可能会遇到一些问题。

您可以使用函数中允许的最大精度值,而不是尝试在代码中动态设置它,或者将应用程序端的输出格式化为正确的位数。