表结构如下
  ID     AID        PID
  1   3,5,15,23     3,15
  2   5,12,16,21    5,12
  3  2,16,9,5,31     31
  4  15,25,8,9,7    15,9现要求查询AID中包含同时PID中不包含某个数字的所有记录。
例如要查询包含 5 的记录,要得到如下结果:
  ID     AID        PID
  1   3,5,15,23     3,15
  3  2,16,9,5,31     31只能针对 5 ,对15、25等数据中包含的 5 要忽略

解决方案 »

  1.   

    declare @t table (ID int,AID varchar(20),PID varchar(20))
    insert @t select
      1   ,'3,5,15,23',     '3,15' union all select 
      2   ,'5,12,16,21',    '5,12' union all select 
      3  ,'2,16,9,5,31',     '31' union all select 
      4  ,'15,25,8,9,7',    '15,9'select * from @t where charindex(',5,',','+AID+',')>0 and charindex(',5,',','+PID+',')=0
    /*
    結果:
    ID          AID                  PID
    ----------- -------------------- --------------------
    1           3,5,15,23            3,15
    3           2,16,9,5,31          31
    */