DECLARE @sin varchar
SET @sin = '201,202,209,305,1058'
SELECT * FROM TABLE1 WHERE ID IN (@sin) --错误
SELECT * FROM TABLE1 WHERE ID IN (201,202,209,305,1058) 怎样才能在 IN() 里面使用@sin?

解决方案 »

  1.   

    竟然不能修改帖子
    DECLARE @sin varchar(100)
      

  2.   

    DECLARE @sin varchar(100) 
    SET @sin = '201'',''202'',''209'',''305'',''1058'
    --SELECT * FROM TABLE1 WHERE ID IN (@sin) --错误
    --用动态Sql语句
    EXEC ('SELECT * FROM TABLE1 WHERE ID IN (''' + @sin + ''')')
      

  3.   

    DECLARE @sin varchar
    SET @sin = '201,202,209,305,1058'
    exec('SELECT * FROM TABLE1 WHERE ID IN (' + @sin + ')') 
      

  4.   

    select * from table1 where charindex(','+rtrim(id)+',' , ','+@sin+',')>0
    --或
    select * from table1 where ','+rtrim(id)+',' like '%,'+@sin+',%')>0
    --或
    select * from table1 where patindex('%,'+rtrim(id)+',%' , ','+@sin+',')>0--动态语句的,或转为union再join的动态语句我就不写了