现在的表结构式这样的 id          name   superid  level            
37353 千阳县 1 1
38044   37353 2  
39302 南寨镇 38044 3
43009 闫家村 39302 4
46447 6组 43009 5 地址是存储在树形结构表中 
地址组合后是 千阳县 南寨镇闫家村6现在要求模糊查询地址  比如 %南寨%  
%南寨镇闫家% 等 。请教高手 解答  在线等

解决方案 »

  1.   

    select wn from(
    select wm_concat(name)wn from 
    (select * from tt order by level))
    where wn like '%南寨镇闫家%'
      

  2.   


    在#2基础上,
    select id from (select id,row_number() over(order by level desc) rn from table where instr(wn,name) > 0)
    where rn = 1;
      

  3.   

    感觉这样的需求最好还是加个full name字段比较好一些。
    这样性能会好一些。
      

  4.   

    level作为字段名应该是禁用的,我将其改为level1
    select id from(
    select max(case when ld is null
      then id end)id,
      wm_concat(name)wn from (
    select id,lead(id)over(partition by rownum-level order by level1)ld,
      name,rownum-level rn from t1 
    start with level1=1
    connect by prior id=superid)
    group by rn)
    where wn like '%南寨%'
      

  5.   

    wm_concat(name)wn
    改成
    replace(wm_concat(name),',','')wn
      

  6.   

    谢谢 各位
    语句是写出来,但是oracle 内部报了个错误,应该是嵌套太多,重启后可以
    为了保险不使用这样的方法!