开发者

How to execute mathematical expression stored in a varchar variable

I have a variable in my database function:

@LocalVariable = '2*3开发者_运维百科*100'

I want to get the result by executing the expression in another variable. May any one advise on how to execute the expression? Also, I want to do it in a database function (not in a stored procedure). The result I expect is 600.


DECLARE @LocalVariable VARCHAR(32);
SET @LocalVariable = '2*3*100';
EXEC('SELECT ' + @LocalVariable);

To get it into a variable:

DECLARE @LocalVariable VARCHAR(32);
SET @LocalVariable = '2*3*100';

DECLARE @out INT, @sql NVARCHAR(4000);
SET @sql = N'SELECT @out = ' + @LocalVariable;

EXEC sp_executesql @sql, N'@out INT OUTPUT', @out OUTPUT;

PRINT @out;

However you can't do this in a function, because you can't use EXEC, sp_executesql etc. in a function, sorry.


You could use sp_executesql:

declare @expression nvarchar(max)
set @expression = '2*3*100'

declare @sql nvarchar(max)
set @sql = 'select @result = ' + @expression

declare @result int
exec sp_executesql @sql, N'@result int output', @result = @result out

select @result

Example at SE Data.


I got a better solution, I though of sharing with you all

DECLARE @x xml
DECLARE @v FLOAT
SET @x = ''
SET @v = @x.value('(1 + 4) div 3', 'FLOAT')
SELECT @v

This will work in function too.


DECLARE @LocalVariable NVARCHAR(100)
SET @LocalVariable = '2*3*100'
EXEC ('SELECT ' + @LocalVariable)
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜