+ -
当前位置:首页 → 问答吧 → oracle9i 中关于 regexp_substr

oracle9i 中关于 regexp_substr

时间:2011-10-28

来源:互联网

如下的视图在oracle9i中怎么转换 
create or replace view v_v8_tbl_agent_status as
(
select agent_code,update_time,user_code,user_name,user_area,current_queue_id,class_id,class_name,extension,current_status,
status_start_time,caller,computer_ip,call_center,signin_id,is_warn,warn_item,agent_sub_status,classwork_id,reserve_code1,
regexp_substr(queue_id,'[^;]+',1,line) as queue_id from tbl_agent_status,(select rownum as line from tbl_agent_status connect by rownum<=(select
max(length(queue_id)-length(replace(queue_id,';','')))+1 from tbl_agent_status)) where regexp_substr(queue_id,'[^;]+',1,line) is not null);

谢谢!

作者: liuhengwinner   发布时间: 2011-10-28

regexp_substr(queue_id,'[^;]+',1,line)
是以;为分隔符,把queue_id分成N部分,然后从第1个字符,开始截取第line的部分的串,例:
select regexp_substr('aaa;bbbbb;cccc','[^;]+',1,2) from dual
结果是bbbbb。

不过转的话,代码就多了。

作者: yixilan   发布时间: 2011-10-28

我就是想要转的代码

作者: liuhengwinner   发布时间: 2011-10-28

那你是不是应该把表结构贴出来,另外整一点数据?

作者: opps_zhou   发布时间: 2011-10-28

表的结构如下图

select t.user_name,t.queue_id from tbl_agent_status t

返回查询结果

User_NAME QUEUE_ID
曾桦 46-1;8-1;9-1
叶小叶 1-1;13-1;


原来是在Oracle10中的视图实现如下查询结果

User_NAME QUEUE_ID
曾桦 46-1
曾桦 8-1
曾桦 9-1
叶小叶 1-1
叶小叶 13-1;



但oracle9i 中 没有regexp_substr 应该如何转换

作者: liuhengwinner   发布时间: 2011-10-28