2016-06-08 40 views
0

为十进制我有一个MySQL的功能,在那里我有铸造成十进制这样MySQL的投用可变精度

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

MySQL不允许使用变量来定义数据,因此您不能使用变量来指示小数数据类型的精度或小数位数。

您所能做的只是通过字符串连接创建适当的sql命令并使用prepared statement发布它。

准备好的语句唯一的方法就是它们不会在函数的上下文中执行。所以,如果你打算在你的函数中使用结果,那么你可能会遇到一些问题。

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