【DM】根据指定字符分割字符串,返回表
一、创建记录 CREATE OR REPLACE TYPE TYPE_ROW_SPLITSTR AS OBJECT ( id INT, val NVARCHAR(500) ); 二、创建嵌套表 CREATE OR REPLACE TYPE TYPE_TABLE_SPLITSTR is TABLE OF TYPE_ROW_SPLITSTR;
三、自定义函数
CREATE OR REPLACE FUNCTION splitTable( strval IN TEXT, splitstr IN CHAR(1) ) RETURN TYPE_TABLE_SPLITSTR AUTHID DEFINER PIPELINED AS R Type_Row_SplitStr; --每一行 i INT; --自定义截取字符串开始值 id INT; --自定ID tmpstr1 TEXT; --截取后的值 BEGIN id:=1; --INSTR(char1,char2[,n,[m]]) --从 char1 的第 n 个字节开始查找字符串 char2 的第 m 次出现的位置 i:=INSTR(strval,splitstr); while i>0 loop tmpstr1 :=substring(strval,1,i-1); strval :=substring(strval,i+1,len(strval)+i); R := Type_Row_SplitStr(id, tmpstr1); PIPE ROW (R); i :=INSTR(strval,splitstr); id :=id+1; end loop; if ifnull(strVal,'')<>'' then R := Type_Row_SplitStr(id,strVal); PIPE ROW (R); end if; END; 用法的:select * From table(splitTable('1,3,5,',','));
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下