我有一张表a的记录如下(DEPART_ID是varchar2型):
DEPART_ID Num
----------- -------
;88;10; 3
;A_1;88;4; 1
;A_2;4;89; 5
能否通过view或procedure从表a得到下面的一组记录(根据DEPART_ID中的;来拆分):
DEPART_ID Num
----------- -------
88 3
10 3
A_1 1
88 1
4 1
A_2 5
4 5
89 5
该如何实现比较好?
DEPART_ID Num
----------- -------
;88;10; 3
;A_1;88;4; 1
;A_2;4;89; 5
能否通过view或procedure从表a得到下面的一组记录(根据DEPART_ID中的;来拆分):
DEPART_ID Num
----------- -------
88 3
10 3
A_1 1
88 1
4 1
A_2 5
4 5
89 5
该如何实现比较好?
解决方案 »
- 通过 pl/sql developer 工具通过DBLINK去查询一个表。为什么commit,rollback按钮会被激活。
- 关于导入数据库的问题
- 列出合计结果,请大家帮忙!!!!
- Oracle的Java Stored Procedure
- 麻烦看下这个用in为条件的动态sql,为什么查不出结果?
- ★★★各位大侠请进,帮俺分析一下(长事务问题),救急啊!
- 学习oracle SG的经验和方法
- utl_file.fopen('C:/','aaa.txt','w');提示路径无效,这是为什么?
- 请问数据库恢复问题,在线等,谢谢~
- 麻烦的SQL语句,救我啊!!!
- ORACLE鎖定機制
- oracle spatial出现问题该如何解决
/create or replace function strtab(p_str in varchar2)
return mytabletype
as
lstr varchar2(1000) default p_str||',';
ln number;
ldata mytabletype:=mytabletype();
begin
loop
ln:=instr(lstr,',');
exit when (nvl(ln,0)=0);
ldata.extend;
ldata(ldata.count):=ltrim(rtrim(substr(lstr,1,ln-1)));
lstr:=substr(lstr,ln+1);
end loop;
return ldata;
end;
/SQL> select * from table(cast(strtab('11,12,13') as mytabletype));COLUMN_VALUE
------------
11
12
13SQL> create table bb(id varchar2(2),name varchar2(10));Table createdSQL> insert into bb values('11','张三');1 row insertedSQL> insert into bb values('12','李四');1 row insertedSQL> insert into bb values('13','王五');1 row insertedSQL> select * from bb where id in (select * from table(cast(strtab('11,12,13') as mytabletype)));ID NAME
-- ----------
11 张三
12 李四
13 王五