Oracle 超长字符串分割劈分
Oracle 超长字符串分割劈分,具体能有多长没测过,反正很大....
下面,,,,直奔主题了:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | CREATE OR REPLACE FUNCTION splitstr(p_string IN clob, p_delimiter IN VARCHAR2:= ',' ) RETURN str_split PIPELINED /*劈分字符串,返回结果集 使用 select COLUMN_VALUE from table(splitstr('34324,65,gfds,yt,,')); --默认分隔符 使用 select COLUMN_VALUE from table(splitstr('34324,65,gfds,yt,,',',')); 使用遍历 for tbl in (select * from table(splitstr('123,567,9'))) loop ... end loop; */ AS v_length NUMBER := LENGTH(p_string); v_start NUMBER := 1; v_index NUMBER; v_chars varchar (4000); --限制每行长度,方便使用 BEGIN WHILE(v_start <= v_length) LOOP v_index := INSTR(p_string, p_delimiter, v_start); IF v_index = 0 THEN v_chars:=substr(SUBSTR(p_string, v_start),1,4000); PIPE ROW(v_chars); v_start := v_length + 1; ELSE v_chars:=substr(SUBSTR(p_string, v_start, v_index - v_start),1,4000); PIPE ROW(v_chars); v_start := v_index + 1; END IF; END LOOP; RETURN ; END splitstr; |
返回的table 列有限制长度的,为varchar2长度限制, 方便其他操作
还有这个要定义的: CREATE OR REPLACE TYPE str_split IS TABLE OF VARCHAR2(32676);
在存储过程调用时,如果是参数/变量传入,不能是long类型的,否则报错,因为long类型.....就不多说了
转载记得原文链接:http://cnblogs.cn/lzpong
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
原文链接:https://www.cnblogs.com/lzpong/p/5086173.html
--- auth:lzpong
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!