导航
  • 主页
  • Oracle 基础和管理
  • Oracle 高级技术
  • Oracle 认证与考试
  • 职位交流
  • 问答

Oracle中如何分解字符串

funnyball 2003-12-15 12:08:33
Oracle中如何分解字符串?
例如我要写一个函数,传入参数为字符串:A~B~C~D~
函数中要拆分A~B~C~D~为A、B、C、D四个子串来分别进行操作
请问具体应该怎么做,是否有什么好用的函数?
谢谢!!!
...全文
168 点赞 收藏 3
写回复
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
beckhambobo 2003-12-15
create or replace type mytabletype as table of number;
/

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
13

SQL> create table bb(id varchar2(2),name varchar2(10));

Table created

SQL> insert into bb values('11','张三');

1 row inserted

SQL> insert into bb values('12','李四');

1 row inserted

SQL> insert into bb values('13','王五');

1 row inserted

SQL> select * from bb where id in (select * from table(cast(strtab('11,12,13') as mytabletype)));

ID NAME
-- ----------
11 张三
12 李四
13 王五
回复
offsider 2003-12-15
substr(v_instr,1,1) = 'A'
instr(v_instr,1,'A') = 1;

用这两个结合使用,就可以拆开
回复
skystar99047 2003-12-15
可以自己写一个函数。
回复
发动态
发帖子
Oracle
创建于2007-09-28

1.6w+

社区成员

Oracle开发相关技术讨论
申请成为版主
社区公告
暂无公告