在SQL SERVER 2005中
下面的语句可以查询出结果来
select * from [table] where [id] in ('1', '2')
但是当换成变量代替"'1', '2'"的时候就查询不出结果集

解决方案 »

  1.   

    select * from [table] where [id] in (''@1'', ''@2'')
      

  2.   

    exec 'select * from [table] where [id] in (' + @1 + ', ' + @2 +')'
      

  3.   


    ALTER PROCEDURE [dbo].[test_proc] @in -- in 里面的条件 形如:1,2,3
    AS
    BEGIN
      DECLARE @sql VARCHAR(4000);
      DECLARE @in2 VARCHAR(4000);
      SET @sql = 'SELECT * FROM [table] where [id] in ('+@in2+')';
      EXEC(@sql);
    END
      

  4.   

    -- 应该正确:
    ALTER PROCEDURE [dbo].[test_proc] @in -- in 里面的条件 形如:1,2,3
    AS
    BEGIN
      DECLARE @sql VARCHAR(4000);
      SET @sql = 'SELECT * FROM [table] where [id] in ('+@in+')';
      EXEC(@sql);
    END
      

  5.   

    把这句
    select * from [table] where [id] in ('1', '2')
    变一下形式也可以,在传参数时写成 1,2
    如下:
    set @s='1,2'
    select * from [table] where charindex(','+[id]+',',','+@s+',')>0即
    select * from [table] where charindex(','+[id]+',',',1,2,')>0