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

Stored procedures 将算术公式从字符串转换为数值,stored-procedures,sql-server-2012,user-defined-functions,Stored Procedures,Sql Server 2012,User Defined Functions,我有一个表格,其中所有条目都是算术公式(即“0.51+2.50+3.50”) 在此表中,所有列均为varchar类型。该表有许多类似这样的列 我想在一个函数中计算公式并将其用于其他计算,但我的问题是“EXEC”不能用于边函数,也不能在存储过程中使用函数 那么,关于如何实现这一点有什么建议吗?免责声明:我是项目的所有者 为了按照建议创建自己的SQL CLR,您可以使用现有的CLR,它允许您在T-SQL中esily编写C#语法 -- SELECT 6.51 SELECT SQLNET::New('0

我有一个表格,其中所有条目都是算术公式(即“0.51+2.50+3.50”)

在此表中,所有列均为varchar类型。该表有许多类似这样的列

我想在一个函数中计算公式并将其用于其他计算,但我的问题是“EXEC”不能用于边函数,也不能在存储过程中使用函数


那么,关于如何实现这一点有什么建议吗?

免责声明:我是项目的所有者

为了按照建议创建自己的SQL CLR,您可以使用现有的CLR,它允许您在T-SQL中esily编写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

文档:

仅“+”?或者整个谱(+,-,*,/)…它可以是任何东西(+,-,*,/),并且您希望运算符优先级也能正常工作(2+2*2=6而不是8)是吗?显示更多表达式,是否需要数学函数,括号,^表示幂,…编辑您的问题,显示更多示例,我可以用T-SQL编写简单案例的代码,但我不会,因为你会写,你必须处理,等等。可能最简单的方法是写CLR func,它将评估你的数学表达式。我只想知道有没有可行的方法,这里休息,那里休息。