用户要求手动点选指定的条目。
我用 id=1 or id=2 or id=3 ...
的方法筛选。出现的问题显而易见。不知道有什么好方法。谢谢各位...

解决方案 »

  1.   

    select *
    from tb
    where charindex(','+ltrim(id)+',',','+'1,2,3'+',')>0
      

  2.   

    ---2000的话
    /*--化解字符串不能超过8000的方法 经常有人提到,用动态生成SQL语句的方法处理数据时,处理语句超长,无法处理的问题 
    下面就讨论这个问题: 
    --邹建   2003.9(引用请保留此信息)--*/ 
    --方法1.   多个变量处理 --根据查询结果定义变量(实际处理中,应该是估计需要多少个变量,定义足够多的变量个数,多定义变量并不影响处理,下面就多定义了一个) 
    --生成数据处理临时表 
    SELECT   id=IDENTITY(int,0,1), 
    g=0, 
    a=CAST(N ', '+QUOTENAME([name]) 
    +N '=SUM(CASE   [name]   WHEN   N '+QUOTENAME(name,N ' ' ' ') 
    +N '   THEN   [colid]   ELSE   0   END) ' 
    as   nvarchar(4000)) 
    INTO   #   FROM   syscolumns 
    WHERE   name> N ' ' 
    GROUP   BY   name --分组临时表 
    UPDATE   a   SET   G=id/i 
    FROM   #   a,(SELECT   i=3800/MAX(LEN(a))   FROM   #)b 
    SELECT   MAX(g)+1   as   N '需要的变量个数 '   FROM   # DECLARE   @0   nvarchar(4000),@1   nvarchar(4000),@2   nvarchar(4000),@3   nvarchar(4000),@4   nvarchar(4000) 
    SELECT   @0=N ' ',@1=N ' ',@2=N ' ',@3=N ' ',@4=N ' ' 
    SELECT   
    @0=CASE   g   WHEN   0   THEN   @0+a   ELSE   @0   END, 
    @1=CASE   g   WHEN   1   THEN   @1+a   ELSE   @1   END, 
    @2=CASE   g   WHEN   2   THEN   @2+a   ELSE   @2   END, 
    @3=CASE   g   WHEN   3   THEN   @3+a   ELSE   @3   END, 
    @4=CASE   g   WHEN   4   THEN   @4+a   ELSE   @4   END 
    FROM   # 
    EXEC(N 'SELECT   xtype '+@0+@1+@2+@3+@4+N '   FROM   syscolumns   GROUP   BY   xtype ') 
    DROP   TABLE   # /*--方法说明 优点:比较灵活,数据量大时只需要增加变量就行了.不用改动其他部分 
    缺点:要自行估计处理的数据,估计不足就会出错 
    --*/ 参考!不过貌似 in  就能解决了。
      

  3.   


    declare @s varchar(50)
    set @s='1,2,3'--1.
    exec('select * from tb where id in('+@s+')')--2.
    select * from tb where ','+@s+',' like '%,'+ltrim(id)+',%' 
    or 
    select * from tb where charindex(','+ltrim(id)+',',','+@s+',')>0
      

  4.   


    全部说光了 还有个partindex