gpt4 book ai didi

SQL Server - 如何基于动态公式执行计算

转载 作者:行者123 更新时间:2023-12-02 09:29:30 27 4
gpt4 key购买 nike

我有一个情况,我需要根据列中的特定条目执行动态计算。

表格看起来像:

DECLARE Temp TABLE (
Id INT,
Name NVARCHAR(255),
Const1 DECIMAL(18,10),
Const2 DECIMAL(18,10),
Const3 DECIMAL(18,10),
Const4 DECIMAL(18,10)
);

我想添加一个名为“计算”的字段。用户必须在该字段中指定如何应用常量(即“Const1 * Const2 + (Const3 - Const4)”)。

我有一个对公式进行硬编码的函数,但我希望能够动态地将表列映射到“计算”字段。这可能吗?如果我得到一个像这样的表条目:

ID| Name         | Const1 | Const2 | Const3 | Const4 | Calculation
1 | Calculation1 | 5 | 3 | 2 | 9 | Const1 * Const2 + (Const3 - Const4)

那么在我的函数中,我可以动态地进行计算并将其作为输出返回吗?我是否以正确的方式解决这个问题?

提前致谢!

最佳答案

您需要将动态 SQL 与 sp_executesqlEXEC 结合使用。我不记得这些是否可以在 UDF 中使用,并且有一些问题需要注意,例如 SQL 注入(inject)和可能的性能问题。我没有时间测试这是否适用于 UDT,但您可能需要类似的东西:

DECLARE @sql VARCHAR(MAX)

SELECT @sql = 'SELECT ' + REPLACE(REPLACE(Calculation, 'Const1', Const1), 'Const2', Const2)... + ' AS result'
FROM My_Table
WHERE ID = 1

EXEC(@sql)

关于SQL Server - 如何基于动态公式执行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34659347/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com