当前位置:  开发笔记 > 数据库 > 正文

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

如何解决《SQLServer-如何基于动态公式执行计算》经验,为你挑选了1个好方法。

我有一个案例,我需要根据列中的特定条目执行动态计算.

该表看起来像:

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)

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

提前致谢!



1> Tom H..:

您需要使用sp_executesql或使用动态SQL EXEC.我不记得是否可以在UDF中使用它们并且有一些问题需要注意,例如SQL注入和可能的性能问题.我没有时间测试它是否在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)

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有