Oracle中如何分解字符串

funnyball 2003-12-15 12:08:33
Oracle中如何分解字符串?
例如我要写一个函数,传入参数为字符串:A~B~C~D~
函数中要拆分A~B~C~D~为A、B、C、D四个子串来分别进行操作
请问具体应该怎么做,是否有什么好用的函数?
谢谢!!!
...全文
204 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
可以自己写一个函数。

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧