比如
declare  @sss varchar(200)
set @sss = 'select Cname from characters where CharacterID in(select FdIds from characters c2 where Cname = ''strife'')'我想运行@sss,如何做到?还有个问题直接运行
select Cname from characters where CharacterID in(select FdIds from characters c2 where Cname = 'strife')
会有错,因为CharacterID是整型,而FdIds是一个字符串‘1,2,3’这样的,应该能明白我的意思 ,如果想得到我想要的结果怎么做好?请指教。

解决方案 »

  1.   

    declare  @sss varchar(200) 
    set @sss = 'select Cname from characters where CharacterID in(select FdIds from characters c2 where Cname = ''strife'')' 
    exec(@sss)
      

  2.   

    本帖最后由 libin_ftsafe 于 2008-06-05 00:12:27 编辑
      

  3.   

    select Cname 
    from characters 
    where (select ','+ltrim(FdIds)+',' from characters c2 where Cname = 'strife') like '%,'+CharacterID+',%' 
      

  4.   

    select Cname from characters where (select ','+FdIds+',' from characters c2 where Cname = 'strife') like '%,'+convert(nvarchar(10),CharacterID)+',%' 
      

  5.   

    exec(@sss)会报错int转换varchar错误,
    根据钻石给的方法加了个convert就可以了
    这样declare  @sss varchar(200) 
    set @sss = 'select Cname from characters where CharacterID in(select FdIds from characters c2 where Cname = ''strife'')' set @sss = 'select Cname from characters where (select '',''+FdIds+'','' from characters c2 where Cname =''strife'') like ''%,''+convert(varchar(20),CharacterID)+'',%'''print @sss
    exec(@sss)
    可以运行了,多谢!