有表结果和数据如下
a表:
id       name                area             ...1111     test            7||6||12||16||30     ...
...
...
...b表:area_id               area_type     ...
  7                     北京        ...
  6                     上海        ...
  5                     天津        ...
...
...
...我想要把所有b表中符合a表的area字段值的所有b表的记录筛选出来该怎么实现?我的猜想SQL是:    select * from a,b
                where (a.area is not null or '|'+area+'|' like '%|'+area_id+'%|')一条SQL中具体该怎么实现呢?有什么函数可以拼接出我想要的SQL呢?

解决方案 »

  1.   

    select 
        b.* 
    from 
        a,b
    where 
        '|'||a.area||'|' like '%|'||to_char(b.area_id)||'%|'
      

  2.   

    楼上的有一点点错误,按你的方法,假如是两位数的话,会把两位拆分了匹配进来,得到三个结果,比如12,会得到1、2、12。稍微改下:
     select 
        b.* 
    from 
        a,b
    where 
        '|'||a.area||'|' like '%|'||to_char(b.area_id)||'|%'
      

  3.   

    select 
        b.* 
    from 
        a,b
    where 
        instr('|'||a.area||'|' , '|'||to_char(b.area_id)||'|')>0