将算术公式从字符串转换为值

时间:2016-01-15 12:42:28

标签: stored-procedures sql-server-2012 user-defined-functions

我有一张表,其中所有条目都是算术公式的形式(即' 0.51 + 2.50 + 3.50')。

在此表中,所有列都是varchar类型。该表有很多这样的列。

我想在函数中计算公式并将其用于其他计算,但我的问题是" EXEC"不能用于副功能,我不能在存储过程中采取功能。

那么,有关如何实现这一目标的任何建议吗?

1 个答案:

答案 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

文档:Dynamically evaluating arithmetic operation in T-SQL