declare @str nvarchar(50)set @str= '106,107' --select * from table where charindex(','+rtrim(id)+',',','+@str+',')>0

解决方案 »

  1.   

    --下面这样就可以了
    --经过测试,没问题declare @str nvarchar(50)
    declare @sqlstr varchar(200)
    set @str= '1,2'
    set @sqlstr='select * from dbo.student where id in('+@str+')'
    exec (@sqlstr)
      

  2.   

    --比较,就知道了   我的测试数据
    select * from student where id in('1,2')
    select * from student where id in(1,2)
      

  3.   

    楼主的问题主要出在类型不一至上,你定义的@str是字符型的,而id是int型的当然要出错了
    如果楼主一定要用你的现在的方法,就在(@str)这加一个类型转换,convert(int,(@str))转成整型就可以查询了
      

  4.   

    declare @str nvarchar(50),@sql nvarchar(500)set @str= '106,107' --set @sql = 'select * from table where id in('+@str+')'exec(@sql)
      

  5.   

    怎么转化用convert(int,'1,2')不会出错的吗