用select查询时如何替换字段中的多个代码字段的内容:(个数是不固定的)001,002,003,006,005  
002,003,005代码表:
dm   mc
001  键盘
002  鼠标
003  硬盘
004  CPU
005  打印机
006  电源要求查询后结果显示如下:键盘,鼠标,硬盘,电源,打印机
鼠标,硬盘,打印机

解决方案 »

  1.   

    用select查询时如何替换字段中的多个代码表table1的field1字段的内容:(只有一个字段,里面的代码个数是不固定的,用逗号分隔)001,002,003,006,005   
    002,003,005代码表table2的内容:
    dm   mc
    001 键盘
    002 鼠标
    003 硬盘
    004 CPU
    005 打印机
    006 电源要求查询后结果显示如下:
    键盘,鼠标,硬盘,电源,打印机
    鼠标,硬盘,打印机希望我已经表述清楚了,大家帮忙
      

  2.   

    select wm_concat(mc) from (
       select b.mc from 
       (
          select dbms_lob.substr(regexp_substr(field1, '[^,]+', 1, x.n)) as tt  from table1, 
    (select rownum n from table1 connect by rownum <=length(field1)-length(replace(field,',',''))+1) x
    ) a,
    table2 b
    where a.tt=b.dm(+)
    )
      

  3.   

    参考这里,借你的帖子我也标记下。。呵呵。。
    http://www.sucai.com/Tech/List4/20601.htm
      

  4.   

    oracle 9i 中不支持正则表达式应该怎样处理呢
      

  5.   

    那就用substr和instr结合使用哈
      

  6.   

    select wm_concat(mc) from (
        select b.mc from (
             select substr(filed1,decode(rownum,1,0,instr(filed1,',',rownum-1)),3) t   from table1 connect by rownum <=length(field1)-length(replace(field,',',''))+1) a,
             table2 b where a.t=b.dm(+)
    )
      

  7.   

    完了。。又没有wm_concat函数,去搜索下9i的怎么实现wm_concat函数吧i am tired!