-1
我有一個表格,其中所有條目均採用算術公式(即'0.51 + 2.50 + 3.50')。將算術公式從字符串轉換爲值
在此表中,所有列都是varchar類型。該表有很多像這樣的列。
我想計算一個函數內的公式,並將其用於一些其他計算,但我的問題是「EXEC」不能用於副函數,我不能在存儲過程中使用函數。
那麼,有關如何實現這一目標的任何建議?
我有一個表格,其中所有條目均採用算術公式(即'0.51 + 2.50 + 3.50')。將算術公式從字符串轉換爲值
在此表中,所有列都是varchar類型。該表有很多像這樣的列。
我想計算一個函數內的公式,並將其用於一些其他計算,但我的問題是「EXEC」不能用於副函數,我不能在存儲過程中使用函數。
那麼,有關如何實現這一目標的任何建議?
免責聲明:我的項目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
只有'+'? (+, - ,*,/)... – lad2025
它可能是任何東西(+, - ,*,/) – Sham
而且您還希望運算符優先級正常工作(2 + 2 * 2 = 6) 8)是嗎?顯示更多的表達,你需要數學函數,括號,^的權力,... – lad2025