Oracle 根据某标识符截取字符串问题,求SQL语句

例如:
一个字段内容为:AA部门;BBB部门;C部门;。。。。
我想用SQL语句根据分号(;)进行分段截取内容:先截取第一个“AA部门”放入某字段,然后截取“BBB部门”放入某字段,再截取第三个“C部门”放入某字段。。。
请问SQL语句怎么写(放入某字段的语句不用写,我目的只为怎么按某标识符进行截取而已)谢谢

create table test (col1 varchar2(20));
insert into test values ('1;2;3');

select col1 from
(select substr(t.ca,instr(t.ca, ';', 1, c.lv) + 1,instr(t.ca, ';', 1, c.lv + 1) - (instr(t.ca, ';', 1, c.lv) + 1)) AS col1
from
(select ';' || col1 || ';' AS ca,length(col1 || ';') - nvl(length(REPLACE(col1, ';')), 0) AS cnt FROM test) t,
(select LEVEL lv from dual CONNECT BY LEVEL <= 100) c where c.lv <= t.cnt);

貌似只能放到一个列中
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-08
不用正规表达式也可以的,不过放到N个字段就不可能了,放到一个字段里吧
第2个回答  2013-03-08
应该要用到正则表达式,看看楼下怎么写
相似回答