我有一张表,其中所有条目都是算术公式的形式(即' 0.51 + 2.50 + 3.50')。
在此表中,所有列都是varchar类型。该表有很多这样的列。
我想在函数中计算公式并将其用于其他计算,但我的问题是" EXEC"不能用于副功能,我不能在存储过程中采取功能。
那么,有关如何实现这一目标的任何建议吗?
答案 0 :(得分:0)
免责声明:我是该项目的所有者Eval SQL.NET
而是按照建议创建自己的SQL CLR,您可以使用现有的SQL CLR,它允许您在T-SQL中编写C#语法。
-- SELECT 6.51
SELECT SQLNET::New('0.51 + 2.50 + 3.50').Eval()
您甚至可以使用列作为公式和参数
-- Evaluate dynamically expression in T-SQL
DECLARE @tableFormula TABLE (
Formula VARCHAR(255), X INT, Y INT, Z INT
)
INSERT INTO @tableFormula VALUES ('x+y*z', 1, 2, 3 ),
('(x+y)*z', 1, 2, 3 )
-- SELECT 7
-- SELECT 9
SELECT SQLNET::New(Formula)
.Val('x', X)
.Val('y', Y)
.Val('z', Z).EvalInt()
FROM @tableFormula