我有一个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。
答案 0 :(得分:2)
MySQL不允许使用变量来定义数据,因此您不能使用变量来指示十进制数据类型的精度或比例。
您所能做的就是通过字符串连接创建相应的sql命令,并使用prepared statement发出它。
准备语句的唯一缺点是它们不是在函数的上下文中执行的。因此,如果您计划稍后在函数中使用结果,那么您可能会遇到一些问题。
您可以使用函数中允许的最大精度值,而不是尝试在代码中动态设置它,或者将应用程序端的输出格式化为正确的位数。