首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用表列值作为另一列中结果的计算

使用表列值作为另一列中结果的计算
EN

Stack Overflow用户
提问于 2020-10-10 00:00:02
回答 1查看 22关注 0票数 0

我有一个表,其中有一列名为"Calc“varchar(50)。此列包含数学计算,如1+1、9*9、10/2、10-2等。是否可以在更新查询中应用该列的计算,并将结果输出到"Results“列的同一个表中的varchar(50)。

EN

回答 1

Stack Overflow用户

发布于 2020-10-10 00:17:43

到目前为止,SQL Server没有EVAL()函数,也不支持宏替换。

但是,这可以通过动态SQL来完成

示例

代码语言:javascript
运行
复制
Create table #YourTable (id int,[Calc] varchar(150),Results varchar(150))
Insert Into #YourTable Values 
 (1,'1+1',null)
,(2,'9*9',null)
,(3,'10/2',null)
,(4,'10-2',null)
,(5,'datediff(DAY,''2018-01-01'',getdate())',null)  -- Added Just for Fun


Declare @SQL varchar(max) = Stuff((Select ',' + concat('(',ID,',',[Calc],')')
                                     From #YourTable  A
                                     For XML Path (''))
                                 ,1,1,'')
Exec('Update A set Results = B.Value
       From  #YourTable A
       Join ( Select * from (values ' + @SQL + ')A([ID],[Value]) ) B
         on A.ID = B.ID
       ')

Select *
 From  #YourTable

更新表

代码语言:javascript
运行
复制
id  Calc                                    Results
1   1+1                                     2
2   9*9                                     81
3   10/2                                    5
4   10-2                                    8
5   datediff(DAY,'2018-01-01',getdate())    1012
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64283490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档