declare @Param nvarchar(50)  
select * from temp where A in (@Param)                  
传进来的是'1,2,3'        
这样是不对的 A 是 int型 
sql:select * from temp where A in ('1,2,3') 错误如何让转换成
sql: select * from temp where A in(1,2,3)除了用拼接外还有啥办法能解决呢?怎么把('1,2,3')->(1,2,3)   

解决方案 »

  1.   


    exec ('select * from temp where A in ('+@Param+') ')
      

  2.   

    declare @Param nvarchar(50)  
    select * from temp where  ','+@Param+',' like   '%,'+rtrim(A)+',%'
      

  3.   

    前提是你只传@params的值不带引号 1,2,3,作为一个字符串传入,然后在sql语句里面做字符串拼接@params ='1,2,3'
    @Sql = 'select * From temp where A in ('+@params+')'
    exec (@Sql)
      

  4.   

    set @params ='1,2,3'
    select @Sql = 'select * From temp where A in ('+@params+')'
    exec (@Sql)
      

  5.   

    唉! 你们都是用的拼接  我是用的是  replace(@params,'''','')
      

  6.   

    select * From temp where charindex(cast(A as varchar(90)),@params)<>0