DECLARE @RW numeric(18, 2)
 set @RW=100.3
 declare @sql varchar(8000)
 
set @sql='select [USERNAME],[USERID],'+ @RW +' FROM DT
提示:从数据类型 varchar 转换为 numeric 时出错。可是@RW是numeric类型啊。

解决方案 »

  1.   


    DECLARE @RW numeric(18, 2)
     set @RW=100.3
     declare @sql varchar(8000)
     
    set @sql='select [USERNAME],[USERID],'+ @RW +' FROM DT'
    exec (@sql)刚刚没写完整。
      

  2.   

    DECLARE @RW numeric(18, 2)
     set @RW=100.3
     declare @sql varchar(8000) 
    set @sql='select [USERNAME],[USERID],'+ rtrim(@RW) +' FROM DT'
      

  3.   

    DECLARE @RW numeric(18, 2)
     set @RW=100.3
     declare @sql varchar(8000) 
    set @sql='select [USERNAME],[USERID],'+ rtrim(@RW) +' FROM DT'
    exec (@sql)
      

  4.   

    #3是对的,在贴一个DECLARE @RW numeric(18, 2)
     set @RW=100.3
     declare @sql varchar(8000)
     
    set @sql='select [USERNAME],[USERID],'+ Cast(@RW As Varchar) +' FROM DT'
    exec (@sql)
      

  5.   

    set @sql='select [USERNAME],[USERID],'+ @RW +' FROM DT'
    上面的 @RW 要转换为字符串,才可以和左右的字符串连接,可改为ltrim(@RW)
    即:set @sql='select [USERNAME],[USERID],'+ ltrim(@RW) +' FROM DT'
      

  6.   

    DECLARE @RW numeric(18, 2)
     set @RW=100.3
     declare @sql varchar(8000)
     
    set @sql='select [USERNAME],[USERID],'+convert(varchar(10),@RW) +' FROM DT'
    exec (@sql)
    --再贴一个
      

  7.   


    --如果变量是字段名的话
    DECLARE @RW numeric(18, 2)
    set @RW=100.3
    declare @sql varchar(8000)
    set @sql='select [USERNAME],[USERID],'+ ltrim(@RW) +' FROM DT'
    exec (@sql)
    --如果就是要输出值的话
    DECLARE @RW numeric(18, 2)
    set @RW=100.3
    declare @sql varchar(8000)
    set @sql='select [USERNAME],[USERID],'''+ ltrim(@RW) +''' FROM DT'
    exec (@sql)
      

  8.   

    本帖最后由 roy_88 于 2011-07-28 12:18:11 编辑
      

  9.   

    ltrim(@RW),ltrim或者rtrim会将执行后的类型转化成字符串类型
      

  10.   


    DECLARE @RW numeric(18, 2),@SQL nvarchar(4000);
    set @RW=100.3
     
    set @sql='select [USERNAME],[USERID],'+convert(varchar(18),@RW) +' FROM DT'
    exec (@sql)
      

  11.   


    DECLARE @RW numeric(18, 2)
     set @RW=100.3
     declare @sql varchar(8000)
     
    set @sql='select [USERNAME],[USERID],'+ ltrim(@RW) +' FROM DT'
    exec (@sql)