Oracle将以特定分隔的字符串转成表格的方法(用于类似游标的遍历)

本文介绍了一种在Oracle数据库中将带有特定分隔符的字符串转换成表格的方法。通过定义对象类型和表格类型,并创建了一个名为STR2TABLE的函数,该函数接受两个参数:待转换的字符串和作为分隔符的字符。利用正则表达式和BULK COLLECT特性,函数能高效地将字符串分割并收集到表格类型变量中。示例展示了如何使用该函数。

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

CREATE OR REPLACE TYPE TY_OBJECT AS OBJECT(COL_NAME VARCHAR2(200));
/
CREATE OR REPLACE TYPE TY_TABLE AS TABLE OF TY_OBJECT;
/
CREATE OR REPLACE FUNCTION STR2TABLE(V_STR       IN VARCHAR2,
                                     V_DELIMITER IN VARCHAR2)
--此函数的目的是将以特定字符分隔的字符串转换为游标形式,以例遍历此游标
 RETURN TY_TABLE AS
  V_TY_TABLE TY_TABLE;
BEGIN
  SELECT TY_OBJECT(REGEXP_SUBSTR(V_STR,
                                 '[^' || V_DELIMITER || ']+',
                                 1,
                                 LEVEL,
                                 'i'))
    BULK COLLECT
    INTO V_TY_TABLE
    FROM DUAL
  CONNECT BY LEVEL <=
             LENGTH(V_STR) -
             LENGTH(REGEXP_REPLACE(V_STR, '' || V_DELIMITER || '', '')) + 1;
  RETURN V_TY_TABLE;
END;
/
--应用示例
SELECT * FROM TABLE(STR2TABLE('1,2,3',','));
/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值