oracle 如何拆分字符串

我这有个表A记录:idbm111王一,王二想拆分bm为单个记录:111王一111王二请问谁知道怎么弄啊,非常感谢... 我这有个表A
记录:id bm
111 王一,王二
想拆分bm为单个记录:
111 王一
111 王二
请问谁知道怎么弄啊,非常感谢
展开
 我来答
匿名用户
2014-12-05
展开全部

创建与A相同结构的表A_temp

create or replace procedure busi_bm is
  lstr varchar2(1000);
  ln   number;

  mid a_test.id%type;
  m_bm a_test.bm%type;
begin
  for rec_dia in (select *
                    from a_test t) loop

    if rec_dia.bm = replace(rec_dia.bm, ',') then
      --只有一个值
       insert into a_test_temp values(rec_dia.id,rec_dia.bm);
       commit;
    else
      lstr    := rec_dia.bm || ',';
      loop
        ln := instr(lstr, ',');--第一个逗号的索引  a,b,c
        exit when(nvl(ln, 0) = 0);--没有逗号了,退出
        m_bm := ltrim(rtrim(substr(lstr, 1, ln - 1)));--获得a
        lstr       := substr(lstr, ln + 1);--b,c

         insert into a_test_temp values(rec_dia.id,m_bm);
        commit;
      end loop;
    end if;
  end loop;
end busi_bm;

执行上面的存储过程,写入到A_TEMP表。记得到了你要的结果。


记得采纳!

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式