oracle clob 分割,Oracle clob字符串分割函数

标签:

/******************************************************

ORACLE clob字符串分割函数

首先创建以下type

create or replace type type_str is table of varchar2(1000);

*******************************************************/

FUNCTION FUNC_SPLIT_CLOB(P_STR IN CLOB, P_DELIMITER IN VARCHAR2 DEFAULT ','/*, LEN IN OUT NUMBER*/) RETURN TYPE_STR

AS

RS TYPE_STR := TYPE_STR();

L_STR CLOB := P_STR;

L_DELIMITER CLOB:= TO_CLOB(P_DELIMITER);

L_LEN NUMBER := 0;

N NUMBER;

V_STR VARCHAR2(32767);

LEN NUMBER;

BEGIN

L_LEN := LENGTH(P_DELIMITER);

DBMS_LOB.APPEND(DEST_LOB => L_STR,SRC_LOB =>L_DELIMITER);

LOOP

N := DBMS_LOB.INSTR(LOB_LOC => L_STR,PATTERN => L_DELIMITER);

V_STR:= TRIM(DBMS_LOB.SUBSTR(LOB_LOC => L_STR,AMOUNT => N-1,OFFSET => 1));

EXIT WHEN V_STR IS NULL;

RS.EXTEND;

RS(RS.COUNT) := V_STR ;

LEN := LENGTH(RS(RS.COUNT))+DBMS_LOB.GETLENGTH(L_DELIMITER)+LEN;

DBMS_LOB.ERASE(LOB_LOC => L_STR,AMOUNT => LEN);

END LOOP;

RETURN RS;

END FUNC_SPLIT_CLOB;

SQL> declare

2 lens number default 0;

3 RS TYPE_STR := TYPE_STR();

4 l_string clob:=to_clob('A,AA,AAA,AAAAAB,BB,BBB,BBBB');

5 begin

6 rs:= func_split_clob(p_string => l_string,len => lens);

7 for i in rs.first .. rs.last loop

8 dbms_output.put_line(rs(i));

9 end loop;

10 end;

11 /

A

AA

AAA

AAAAAB

BB

BBB

BBBB

标签:

来源: https://www.cnblogs.com/ayumie/p/9792662.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值