oracle将字符串转成数组_Oracle 自定义字符串转换成数组函数

本文介绍如何在Oracle中自定义函数实现字符串到数组的转换。通过创建自定义类型及函数,可以有效地处理字符串分割任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对于VB,Java、.Net或Js等等语言将字符串转换成数组非常方便,它们都提供了标准的转换函数,然而Oracle 官方没有提供类似的标准函数。但是,我们可以自己定一个类似的函数。

1.自定义类型:

Create Type CuxStrToArray Is Table Of Varchar2(2000);

2.自定义函数:

/*

Str1 被转换成数组的字符串

StrSplit 分隔符

*/

Create Function StrToArray(Str1 Varchar2,StrSplit Varchar2)

Return CuxStrToArray Is

l_Array CuxStrToArray;

Begin

WITH A AS(

SELECT Str1 A FROM DUAL)

SELECT DECODE(B,SUBSTR(A,C),C,B - C)) bulk collect

into l_Array

FROM (SELECT A,B,(LAG(B,1,0) OVER(ORDER BY LV)) + 1 C

FROM (SELECT A,INSTR(A,StrSplit,LEVEL) B,LEVEL LV

FROM A

CONNECT BY LEVEL <=

(LENGTH(A) - LENGTH(REPLACE(A,''))) + 1));

Return l_Array;

End StrToArray;

3.测试如下:

Declare

l_Array CuxStrToArray;

Str1 Varchar2(2000):='2010015447,WK7280MD,WX0057';

StrSplit Varchar2(1):=',';

Begin

l_Array := StrToArray(Str1,StrSplit);

For i In 1..l_Array.Count Loop

dbms_output.put_line('l_Array('||i||')='|| l_Array(i));

End Loop;

End;运行输出结果如下:

l_Array(1)=2010015447 l_Array(2)=WK7280MD l_Array(3)=WX0057

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值