-1

我有一個表格,其中所有條目均採用算術公式(即'0.51 + 2.50 + 3.50')。將算術公式從字符串轉換爲值

在此表中,所有列都是varchar類型。該表有很多像這樣的列。

我想計算一個函數內的公式,並將其用於一些其他計算,但我的問題是「EXEC」不能用於副函數,我不能在存儲過程中使用函數。

那麼,有關如何實現這一目標的任何建議?

+0

只有'+'? (+, - ,*,/)... – lad2025

+0

它可能是任何東西(+, - ,*,/) – Sham

+0

而且您還希望運算符優先級正常工作(2 + 2 * 2 = 6) 8)是嗎?顯示更多的表達,你需要數學函數,括號,^的權力,... – lad2025

回答

0

免責聲明:我的項目Eval SQL.NET

而是創建自己的SQL CLR的建議,您可以使用現有的一個,讓你可以esily在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