declare @test nvarchar(50)
set @test = 'abc'--'100'if isnumeric(@test)=1
    select @test,cast(@test as numeric)
else
    select @test,cast(@test as nvarchar)

解决方案 »

  1.   

    declare @test nvarchar(50)
    set @test = 'abc'--'100'exec ('
    select '+@test+',case isnumeric('+@test+') when 1 then cast('+@test+' as numeric) else  cast('+@test+' as nvarchar) end')
      

  2.   

    libin_ftsafe(子陌红尘:当libin告别ftsafe)不好意思,我这个
    case isnumeric(@test) when 1 then cast(@test as numeric) else  cast(@test as nvarchar) end
    是嵌套在另外一个CASE语句中,不能用IF来做啊!
      

  3.   

    我这有个帖子,请各位老大帮助一下:
    我的帖子在http://community.csdn.net/Expert/topic/4926/4926487.xml?temp=.5838892
    我很急用!
    谢谢
      

  4.   

    这位兄弟(zhangjian01361),
    你这个问题,可以找到很多样例,辛苦点自己找一下吧!
      

  5.   

    declare @test nvarchar(50)
    set @test = '100'--'100'select @test,case isnumeric(@test) when 1 then cast(@test as numeric) else cast(@test as nvarchar) end这样写可以吧
    你把这字符'abc'转换成数值型,能不报错吗
      

  6.   

    楼上的不行的....    你把@test的值,换成字符串试试看...,会报错的.
      

  7.   

    单对这个功能来说,一楼的写法可以!但因为我是要在动态语句中用,也就是要在select 出来时,就能实现这样的转换功能。生成的动态SQL类似:select case Code when 'C01' then case isnumeric(Formula) when 1 then convert(numeric,Formula) else Formula end  end as 'C01',
    case Code when 'C02' then case isnumeric(Formula) when 1 then convert(numeric,Formula) else Formula end  end as 'C02'
    from tableA