Sql 使用informix评估数学表达式字符串
我需要从字符串计算一个数学表达式 字符串看起来像“1.00*1.00*4.00” 我该怎么做 差不多Sql 使用informix评估数学表达式字符串,sql,expression,eval,informix,Sql,Expression,Eval,Informix,我需要从字符串计算一个数学表达式 字符串看起来像“1.00*1.00*4.00” 我该怎么做 差不多 Select field1, field2, EVAL("EXPRESSION") as float from table 那太好了 让我们创建一个测试用例: CREATE TABLE tab1( col1 DECIMAL(10,2), col2 DECIMAL(10,2), col3 DECIMAL(10,2), col4 VARCHAR(250) ); I
Select field1, field2, EVAL("EXPRESSION") as float from table
那太好了 让我们创建一个测试用例:
CREATE TABLE tab1(
col1 DECIMAL(10,2),
col2 DECIMAL(10,2),
col3 DECIMAL(10,2),
col4 VARCHAR(250)
);
INSERT INTO tab1 VALUES (1.0, 1.0, 4.0, "1.00*1.00*4.00")
如果您是从列构建表达式,甚至是传递字符串,那么很简单:
SELECT col1 * col2 * col3 AS from_field,
1.00*1.00*4.00 AS from_string
FROM tab1;
如果该值存储在列上,则必须以编程方式执行,以下是SPL的示例:
CREATE FUNCTION get_eval()
RETURNING DECIMAL(10,2) AS eval;
DEFINE stmt VARCHAR(250);
DEFINE eval_str VARCHAR(250);
DEFINE eval_dec DECIMAL(10,2);
FOREACH cur FOR
SELECT col4
INTO eval_str
FROM tab1
LET stmt = "SELECT " || eval_str || " as eval FROM sysmaster:sysdual INTO TEMP tmp_eval WITH NO LOG;";
EXECUTE IMMEDIATE stmt;
END FOREACH
FOREACH eval FOR
SELECT eval
INTO eval_dec
FROM tmp_eval
RETURN eval_dec WITH RESUME;
END FOREACH
DROP TABLE tmp_eval;
END FUNCTION;
EXECUTE FUNCTION get_eval();
让我们创建一个测试用例:
CREATE TABLE tab1(
col1 DECIMAL(10,2),
col2 DECIMAL(10,2),
col3 DECIMAL(10,2),
col4 VARCHAR(250)
);
INSERT INTO tab1 VALUES (1.0, 1.0, 4.0, "1.00*1.00*4.00")
如果您是从列构建表达式,甚至是传递字符串,那么很简单:
SELECT col1 * col2 * col3 AS from_field,
1.00*1.00*4.00 AS from_string
FROM tab1;
如果该值存储在列上,则必须以编程方式执行,以下是SPL的示例:
CREATE FUNCTION get_eval()
RETURNING DECIMAL(10,2) AS eval;
DEFINE stmt VARCHAR(250);
DEFINE eval_str VARCHAR(250);
DEFINE eval_dec DECIMAL(10,2);
FOREACH cur FOR
SELECT col4
INTO eval_str
FROM tab1
LET stmt = "SELECT " || eval_str || " as eval FROM sysmaster:sysdual INTO TEMP tmp_eval WITH NO LOG;";
EXECUTE IMMEDIATE stmt;
END FOREACH
FOREACH eval FOR
SELECT eval
INTO eval_dec
FROM tmp_eval
RETURN eval_dec WITH RESUME;
END FOREACH
DROP TABLE tmp_eval;
END FUNCTION;
EXECUTE FUNCTION get_eval();
你好,多米尼克,你试过阅读手册吗?你好,当然,但我在手册里找不到正确的位置。你能给我一个提示吗?我问这个问题是因为你的问题缺乏你在这里提问时应该展示的研究成果的基本指示。在重读了这个问题之后,我认为做你期望的事情有点困难。将数据导入excel并在那里进行计算可能更容易。。。或者如果有人慷慨地给了你这方面的代码?这将是慷慨的。你也可以解释为什么你的问题不同于那一个:,或那一个,否则你可能会得到虚假的“重复”标志。谢谢你的回答。你说得对,你提到的问题是相似的。但是第一个与mysql相关——我希望Informix有一个解决方案。在第二本书中没有数学计算。嗨,多米尼克,你试过阅读手册吗?嗨,当然,但我没有在手册中找到正确的位置。你能给我一个提示吗?我问这个问题是因为你的问题缺乏你在这里提问时应该展示的研究成果的基本指示。在重读了这个问题之后,我认为做你期望的事情有点困难。将数据导入excel并在那里进行计算可能更容易。。。或者如果有人慷慨地给了你这方面的代码?这将是慷慨的。你也可以解释为什么你的问题不同于那一个:,或那一个,否则你可能会得到虚假的“重复”标志。谢谢你的回答。你说得对,你提到的问题是相似的。但是第一个与mysql相关——我希望Informix有一个解决方案。第二种方法没有数学计算。