declare @terminalSetIds varchar(8000)='1,2'  //类型varchar
    declare @condictions varchar(8000)=''
    declare @sql varchar(8000)=''
    
    --set @terminalSetIds = REPLACE(@terminalSetIds,'''','')
    select @condictions=@condictions+'  or '+[SQL] from TERMINAL_SET_DEFINITION where Terminal_Set_Id in(@terminalSetIds)   //值就是 1,2
    结果:Conversion failed when converting the varchar value '1,2' to data type int.    请问如何解决,搞不定了..求帮忙了 急...

解决方案 »

  1.   

    exec ('SELECT *   FROM [table1] where ID in('+'1,2'+')')
      

  2.   

    in语法的格式是 in(‘1’,‘2’)  你应该写成
    declare @terminalSetIds varchar(8000)=''1','2'' //类型varchar
    调用
    where Terminal_Set_Id in(’+@terminalSetIds+‘) //值就是 1,2
    然后再
    EXEC(@sql)
    就好了 ~
      

  3.   

    你可以使用拼接然后执行这条sql语句
    像:
    declare @ids varchar(20)
    declare @sql nvarchar(200)
    set @ids='1,2'
    set @sql='select * from news where id in('+@ids+')'
    execute sp_executesql @sql
      

  4.   

    用 exec 执行 sql 语句或者 用表连接。
      

  5.   

    噢  先谢谢楼上几位但是:
         declare @terminalSetIds varchar(8000)='1,2' //类型varchar
        @terminalSetIds的值是不确定的 说不定是1,2,3,4,5 或者1 
     这样我的sql语句只能拼接吗