【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,',','));
复制代码

 

posted @   喝了烫嘴的水  阅读(258)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示