侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130555 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

PLSQL Split分割字符串

2023-11-21 星期二 / 0 评论 / 0 点赞 / 10 阅读 / 1852 字

系统自带的split,使用起来方便,但是如果字符串太长,可能会出现异常,这里,我自己写了一个也是该名字,放在自己的包中,引用的时候带包名就好了。 --系统自带的函数/*CURSOR cur_temp

系统自带的split,使用起来方便,但是如果字符串太长,可能会出现异常,这里,我自己写了一个也是该名字,放在自己的包中,引用的时候带包名就好了。

--系统自带的函数/*CURSOR cur_temp IS*/    SELECT COLUMN_VALUE AS ass_code FROM TABLE(split('ss,aa,aa', ','));

/*========================================================    Description:    分割字符串函数,用参数二(默认逗号),分割成字符串1为 多列                   (此处,我的做法是分割到零时表中,然后可循环读取等)  ==========================================================*/  FUNCTION split(p_list VARCHAR2, p_sep VARCHAR2 := ',') RETURN type_split    PIPELINED IS    l_idx  PLS_INTEGER;    v_list VARCHAR2(4000) := p_list; --长度多给点  BEGIN    --循环递归    LOOP      l_idx := instr(v_list, p_sep);  --获取位置      IF l_idx > 0      THEN        PIPE ROW(substr(v_list, 1, l_idx - 1));  --截取        v_list := substr(v_list, l_idx + length(p_sep));--递归      ELSE        PIPE ROW(v_list);        EXIT;      END IF;    END LOOP;    RETURN;  END split;

分割到行中了,这下我们就可以方便操作了。

分享共进步,谢谢阅读!

广告 广告

评论区