oracle以空格为分隔,Oracle-分割字符串逗号分隔(字符串包含空格和连续逗号)

本文介绍了如何在Oracle数据库中使用正则表达式和PL/SQL来拆分逗号分隔的字符串,并将其存储到索引表中。示例代码展示了一个过程,该过程遍历字符串并将每个分隔的部分存储到一个表中,最后输出数组的大小。此方法适用于处理和分析包含多个值的单一字段。

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

我找不到有关如何在ORACLE中拆分逗号分隔字符串的解决方案.搜索了很多,没有什么适用于我的情况

DECLARE

TYPE T_ARRAY_OF_VARCHAR IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;

MY_ARRAY T_ARRAY_OF_VARCHAR;

MY_STRING VARCHAR2(2000) := '12 3,456,,abc,def';

BEGIN

FOR CURRENT_ROW IN (

with test as

(select MY_STRING from dual)

select regexp_substr(MY_STRING, '[^,]+', 1, rownum) SPLIT

from test

connect by level <= length (regexp_replace(MY_STRING, '[^,]+')) + 1)

LOOP

DBMS_OUTPUT.PUT_LINE('>' || CURRENT_ROW.SPLIT || '

--DBMS_OUTPUT.PUT_LINE(CURRENT_ROW.SPLIT);

MY_ARRAY(MY_ARRAY.COUNT) := CURRENT_ROW.SPLIT;

END LOOP;

DBMS_OUTPUT.PUT_LINE('Array Size:' || MY_ARRAY.COUNT);

END;

/

输出是:

>12 3<

>456<

>abc<

>def<

><

Array Size:5

空值无序!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值