字符串表达式要计算为数字

Pra*_*enu 7 t-sql sql-server evaluate

我需要编写一个TSQL用户定义的函数,它将接受一个字符串并返回一个数字.

我会调用函数就像dbo.EvaluateExpression('10*4.5*0.5')应该返回数字22.5

任何人都可以帮我写这个功能EvaluateExpression.

目前我正在使用CLR功能,我需要避免.

EDIT1

我知道这可以使用存储过程完成,但我想在一些语句ex中调用此函数: select 10* dbo.EvaluateExpression('10*4.5*0.5')

此外,我有大约400,000个像这样的公式进行评估.

EDIT2

我知道我们可以在函数内部使用osql.exe来解决这个问题.但由于权限设置,我也不能使用它.

And*_*mar 6

我认为在用户定义的函数中不可能.

您可以在存储过程中执行此操作,例如:

declare @calc varchar(max)
set @calc = '10*4.5*0.5'

declare @sql nvarchar(max)
declare @result float
set @sql = N'set @result = ' + @calc
exec sp_executesql @sql, N'@result float output', @result out
select @result
Run Code Online (Sandbox Code Playgroud)

但是,在用户定义的函数中不允许使用动态SQL,如execsp_executesql.