Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将值传递给MySQL列中存储的公式(包含字符串和算术运算符),然后进行计算_Mysql_Stored Procedures - Fatal编程技术网

将值传递给MySQL列中存储的公式(包含字符串和算术运算符),然后进行计算

将值传递给MySQL列中存储的公式(包含字符串和算术运算符),然后进行计算,mysql,stored-procedures,Mysql,Stored Procedures,我需要根据表中存储为VARCHAR的公式进行计算,例如,“100*BasicVal”,并将一些值(如100)传递给变量“BasicVal”的字符串部分(如1000) 我已经试着去做了,很明显,这不是办法。请建议一种实施方法。Trim在我的情况下不起作用,因为有时公式可能长达4-5个可变部分和操作。下面是我在测试表上尝试的代码。它将帮助你理解我想要得到什么 CREATE DEFINER=`root`@`localhost` PROCEDURE `tester`() begin DECLARE V

我需要根据表中存储为VARCHAR的公式进行计算,例如,“100*BasicVal”,并将一些值(如100)传递给变量“BasicVal”的字符串部分(如1000)

我已经试着去做了,很明显,这不是办法。请建议一种实施方法。Trim在我的情况下不起作用,因为有时公式可能长达4-5个可变部分和操作。下面是我在测试表上尝试的代码。它将帮助你理解我想要得到什么

CREATE DEFINER=`root`@`localhost` PROCEDURE `tester`()
begin

DECLARE VALUE0 varchar(50);
DECLARE VALUE1 INT;
DECLARE BasicVal INT;    

select @valueC1:=C1 from tester where id = '1'; 

SET BasicVal = 1000;
SET VALUE0 = @valueC1;
SET VALUE1 = CAST(VALUE0 AS SIGNED );

INSERT IGNORE INTO TESTER (C1) VALUES(VALUE1);

 end
请注意,
“从测试仪中选择@valueC1:=C1,其中id='1';”
返回的行是100*BasicVal


我清楚地理解上面的代码没有实际意义,因为我试图将字符串转换为INT,查看此代码只是为了理解我的要求。

是否可以说,运算符之后、公式结尾之前或下一个数值之前的任何字符串都应替换为传递给过程的参数,并且我们可以进一步假设传递的参数将按照公式要求的替换顺序?所有对于公式字符串的每个不同字符串部分,传递的值都会有一些变量名,就像我在示例中扩展上述公式一样,下一个示例可能是“(100*BasicVal)*(1/BasicVal2)”。因此,我可能已经有2个变量(现有/声明的)BasicVal和BasicVal2,它们必须有一些整数值,我需要将这些值传递给“(100*BasicVal)*(1/BasicVal2)”,并得到INT值作为结果。