oracle 字符串变列,Oracle字符串转成Table列
发布日期:2021-06-24 13:22:43 浏览次数:2 分类:技术文章

本文共 1015 字,大约阅读时间需要 3 分钟。

目录导航:

1. 使用正则表达式

2. 借助DB Function实现

1、使用正则表达式

WITH tb AS

(SELECT '0,1,2,3,4,5,6,7,8' i_name

FROM dual)

SELECT regexp_substr(i_name, '[^,]+', 1, LEVEL) COLUMN_VALUE

FROM tb

CONNECT BY PRIOR dbms_random.value IS NOT NULL

AND LEVEL <= length(i_name) - length(REPLACE(i_name, ',', '')) + 1;

18c689f3e325be28069f3eb454a61f91.png

2、借助DB Function实现

-- DB function

CREATE OR REPLACE FUNCTION STRINGTOVARCHARTABLE ( inputList in varchar2 ) return VarcharTableType

as

v_str long default inputList || ',';

v_n varchar2(4000);

v_data VarcharTableType := VarcharTableType();

begin

loop

v_n :=instr( v_str, ',' );

exit when (v_n is null);

v_data.extend;

v_data( v_data.count ) := ltrim(rtrim(substr(v_str,1,v_n-1)));

v_str := substr( v_str, v_n+1 );

end loop;

return v_data;

end;

SELECT DISTINCT (COLUMN_VALUE)

FROM TABLE(STRINGTONUMBERTABLE('0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23'))

bce6455cee82a5cd40fc0046fb33915a.png

Oracle字符串转成Table列

标签:nec   info   null   substr   --   length   src   chart   table

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:https://www.cnblogs.com/LuckyZLi/p/12195514.html

转载地址:https://blog.csdn.net/weixin_33102135/article/details/116360702 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:oracle open游标,oracle open_cursors的含义及ORA-01000: 超出打开游标的最大数模拟
下一篇:php实现文件读写锁,php session读写锁问题_php

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月04日 17时18分49秒