在SQL Server中执行列值

时间:2018-07-09 14:24:38

标签: sql sql-server

我需要对SQL表中保存的值进行算术运算,例如,我想要15的下一列中的值为5 * 10

EQUATION    VALUE
2+5          7
6+8          14

基于等式,我需要计算值。

2 个答案:

答案 0 :(得分:3)

您现在知道,SQL Server没有EVAL()函数。但是,只要使用一些动态SQL,就可以但实际上不建议

示例

Declare @YourTable Table (id int,[EQUATION] varchar(150))
Insert Into @YourTable Values 
 (1,'2+5')
,(2,'6+8')
,(3,'datediff(DAY,''2018-01-01'',getdate())')  -- Added Just for Fun


Declare @SQL varchar(max) = Stuff((Select ',' + concat('(',ID,',',[EQUATION],')')
                                     From @YourTable  A
                                     For XML Path (''))
                                 ,1,1,'')
Exec('Select * from (values ' + @SQL + ')A([ID],[Value])')

返回

ID  Value
1   7
2   14
3   189

答案 1 :(得分:0)

只需以SELECT语句的形式执行操作

declare @col1 nvarchar(50) = '10+5'

DECLARE @STATEMENT NVARCHAR(50) = 'SELECT'
DECLARE @COMMAND NVARCHAR(50) = @STATEMENT + ' ' + @COL1

exec sp_executesql @COMMAND

输出:

  

15