--这样可以吗
declare @formule varchar(8000)
declare @sql varchar(8000)
select @formule='100-20+30'
set @sql='select '+@formule
exec(@sql)
declare @formule varchar(8000)
declare @sql varchar(8000)
select @formule='100-20+30'
set @sql='select '+@formule
exec(@sql)
from
(
select '100*0.1 + 10 / 9 *100 -100 + 0.9' as F
union all
select '101 * 0.9'
union all
select '101+10+9'
) Tselect *
from Tdeclare @F varchar(100)
declare @ decimal(10,5)
declare @sql nvarchar(100)DECLARE xcursor CURSOR FOR
SELECT F
FROM T
for update of F OPEN xcursorFETCH NEXT FROM xcursor
INTO @FWHILE @@FETCH_STATUS = 0
BEGIN
set @sql = N'set @ = ' + cast(@F as nvarchar(100))
exec SP_EXECUTESQL @sql ,N'@ decimal(8,2) out', @ out
select @F,@ UPDATE T
SET F = cast(@ as varchar(100))
WHERE CURRENT OF xcursor FETCH NEXT FROM xcursor INTO @Fend
CLOSE xcursor
DEALLOCATE xcursorselect *
from T