execute ('select'+'1+6+9+10')

解决方案 »

  1.   

    select cast('1' as int)+'6'+'9'+'10'
      

  2.   


    declare @s varchar(50)
    set @s='select'+' 1+6+9+10'
    execute (@s)
      

  3.   

    CAST 和 CONVERT
    将某种数据类型的表达式显式转换为另一种数据类型。CAST 和 CONVERT 提供相似的功能。语法
    使用 CAST:CAST ( expression AS data_type ) 使用 CONVERT:CONVERT (data_type[(length)], expression [, style])

    DECALRE @AA VARCHAR(9)
    SELECT @AA='1'
    CAST(@AA AS INT)
      

  4.   

    declare @a varchar(20)
    set @a = '1+6+9+10'
    declare @sql varchar(50)
    set  @sql = 'select ' + @a
    exec(@sql)
      

  5.   

    declare @变量 int,@sql nvarchar(4000)
    set @sql='set @大力='+'1+6+9+10'exec sp_executesql @sql,N'@大力 int output',@变量 outputselect @变量 结果
      

  6.   

    declare @结果 int,@sql nvarchar(4000)
    set @sql='set @ire='+'1+6+9+10'exec sp_executesql @sql,N'@ire int output',@结果 outputprint @结果
      

  7.   

    TO:pengdali, zjcxc
      我也看了Sp_executesql,看是沒try成功
    后來用了兩個 procedure  也得到了上述結果但是有一個問題,不能表達是怎麼寫,返回的結果總是沒有小數?
      

  8.   

    declare @var float
    declare @sql nvarchar(4000)
    set @sql='set @var='+'(1+6+9+10)/7'exec sp_executesql @sql,N'@var float output',@var outputselect @var返回結果卻是3.0,為什麼不是正確的小數值?
      

  9.   

    declare @变量 numeric(10,2),@sql nvarchar(4000)
    set @sql='set @大力='+'1.5+6.2+9.4+10'exec sp_executesql @sql,N'@大力 numeric(10,2) output',@变量 outputselect @变量 结果
      

  10.   

    難道是我的Sql server的問題?
      

  11.   

    變量定義不一樣定義成numeric(10,2),只要表達式中有小數部分就行!