oracle 如何截取一个字符串直到后面全是0为止

例如id101332000000005130201100000035900000000000截取之后想要的结果为10133251302011359... 例如 id
10133200000000
51302011000000
35900000000000
截取之后想要的结果为
101332
51302011
359
展开
 我来答
badkano
2017-03-24 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885373
团长

向TA提问 私信TA
展开全部

存储过程做吧。

录入数据

create table test
(id varchar2(100));


insert into test values ('10133200000000');
insert into test values ('51302011000000');
insert into test values ('35900000000000');
commit;

执行代码:

declare
  v_str        varchar2(100);
  v_str1       varchar2(100);
  v_id_reverse varchar2(100);
  v_s          int;
  cursor c_str is
    select id from test;
begin
  open c_str;
  loop
    fetch c_str
      into v_str;
    exit when c_str%notfound;
    select reverse(v_str) into v_id_reverse from dual;
    v_s := 1;
    loop
      select substr(v_id_reverse, v_s, 1) into v_str from dual;
      if v_str = 0 then
        v_s := v_s + 1;
      else
        select reverse(substr(v_id_reverse,
                              v_s,
                              length(v_id_reverse) - v_s + 1))
          into v_str1
          from dual;
        exit;
      end if;
    end loop;
    dbms_output.put_line(v_str1);
  end loop;
  close c_str;
end;

执行结果:

wuliLee女神
2019-08-27
知道答主
回答量:3
采纳率:0%
帮助的人:2333
展开全部
select reverse(to_char(to_number(reverse('10133200000000')))) from dual;
也可以用语句来处理的(全数字)
第一步:将字符串反向排序
第二步:转换成数值类型(这一步可以去掉0啦)
第三步:转换成字符串类型(反向函数不支持数值类型)
第四步:将字符串反向排序(再转回来)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式