两个表a,b  查询表a中  男士所有记录
表a     a1     a2  
        01     张,王,李
        02     张,王
        03     李
        04     王表b     b1     b2
        张     男
        王     女
        李     男结果:        a1     a2  
             01     张,王,李
             02     张,王
             03     李

解决方案 »

  1.   

    SELECT *
    FROM a
    WHERE (a2 NOT LIKE
              (SELECT b1
             FROM b
             WHERE b2 = '男'))
      

  2.   

    select * from 
    (
    select         '01' as a1,     '张,王,李' as a2
    union
    select         '02' as a1,     '张,王' as a2
    union
    select         '03' as a1,     '李' as a2
    union
    select         '04' as a1,     '王' as a2
    ) 表a
    where exists (select b1 from 
    (
    select         '张' as b1,     '男' as b2
    union
    select         '王' as b1,     '女' as b2
    union
    select         '李' as b1,     '男' as b2
    ) 表b
    where b2='男' and 表a.a2 like '%'+b1+'%')
      

  3.   

    不好意思,测了下没通过,又试了个:SELECT *
    FROM a
    WHERE ((SELECT b1
              FROM b
              WHERE b2 = '女') NOT LIKE a2)
      

  4.   

    to Sail365(东少爷) :
      
    实际中 女士 并非一人 所以它不支持
      

  5.   

    SELECT distinct A.*
    from a,b
    where b.b2='男' and charindex(b.b1,a.a2,1)>0
      

  6.   

    测试通过
    SELECT DISTINCT a.*
    FROM a CROSS JOIN
          b
    WHERE (b.b2 = '男') AND (a.a2 LIKE '%' + b.b1 + '%')
      

  7.   

    或者
    SELECT DISTINCT a.*
    FROM a CROSS JOIN
          b
    WHERE (b.b2 = '男') AND (CHARINDEX(RTRIM(b.b1), a.a2, 1) > 0)
    注意字符类型的缺省空格,加上rtrim效果和like是一样的