Oracle中有字符数字,截取数字

如图所示,要截取第二个横杠到第三个横杆之间的数字,要怎么截取?比如第一行的42265,第五行的684554,位数不同。... 如图所示,要截取第二个横杠到第三个横杆之间的数字,要怎么截取?
比如第一行的42265,第五行的684554,位数不同。
展开
 我来答
Storm_duck
推荐于2016-05-01 · TA获得超过1629个赞
知道小有建树答主
回答量:1104
采纳率:82%
帮助的人:452万
展开全部
这个最后写个split函数,然后取数组的第三个数据。
CREATE OR REPLACE TYPE mytable AS TABLE OF varchar2(100);
create or replace function split(src varchar2, delimiter varchar2)
return mytable is
psrc varchar2(500);
a mytable := mytable();
i number := 1; --
j number := 1;
begin
psrc := rtrim(ltrim(src, delimiter), delimiter);
loop
i := instr(psrc, delimiter, j);
--dbms_output.put_line(i);
if i > 0 then
a.extend;
a(a.count) := trim(substr(psrc, j, i - j));
j := i + 1;
--dbms_output.put_line(a(a.count-1));
end if;
exit when i = 0;
end loop;
if j < length(psrc) then
a.extend;
a(a.count) := trim(substr(psrc, j, length(psrc) + 1 - j));
end if;
return a;
end;
更多追问追答
追问
只有存储过程?有没有可以执行的SQL语句?我要提取数据复制到这个表的另外一列
追答
上面的只是一个函数,怎么把字符串截取成子字符串,如果单用一句SQL是搞不定你的要求的。
接下来你要写段PL/PLUS,调用下这个函数,将目标子字符串插入到字段中去。
declare
v_str varchar2(10);
begin
select column_value
into v_str
from (select column_value, rownum as row_id
from table(split('460-00-42265-32825', '-'))
order by rownum)
where row_id = 3;
update table_name t set t.colum = v_str where ......;
end;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式