--这样可以吗
declare @formule varchar(8000)
declare @sql varchar(8000)
select @formule='100-20+30'
set @sql='select '+@formule
exec(@sql)

解决方案 »

  1.   

    --drop table Tselect * into T
    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