oracle倒置数字,Oracle反转倒置函数

Oracle提供了一个反转倒置函数reverse,但此函数不能分组倒置,本文提供了一个即可分组倒置的函数,如下所示:

CREATE OR REPLACE FUNCTION REVERSE_F(p_str VARCHAR2, p_delimiter VARCHAR2:=',')

RETURN VARCHAR2 IS

--=================================================================================

-- author: houtingsong 730882 2014-11-07

-- 字符串分隔分组反向倒置

-- p_str:字符串

-- p_delimiter:分隔符,默认为","

--=================================================================================

v_return VARCHAR2(4000);

vp_str   VARCHAR2(4000) := p_str;

v_idx    number;

vp_len   number := length(p_delimiter);

BEGIN

if (p_delimiter is null) then

select reverse(p_str) into v_return from dual;

else

loop

v_idx := instr(vp_str, p_delimiter);

if (v_idx = 0) then

v_return := vp_str || v_return;

exit;

elsif (v_idx = 1) then

v_return := substr(vp_str, 1, vp_len) || v_return;

vp_str   := substr(vp_str, vp_len + 1);

elsif (v_idx > 1) then

v_return := substr(vp_str, 1, v_idx - 1) || v_return;

vp_str   := substr(vp_str, v_idx);

else

exit;

end if;

end loop;

end if;

RETURN v_return;

END REVERSE_F;

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值