前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle 自定义split 函数

Oracle 自定义split 函数

作者头像
用户1148526
发布2018-01-03 14:26:16
8270
发布2018-01-03 14:26:16
举报
文章被收录于专栏:Hadoop数据仓库Hadoop数据仓库

Oracle没有提供split函数,但可以自己建立一个函数实现此功能。比如“abc defg  hijkl   nmopqr     stuvw  xyz”,分隔符是空格,但空格个数不定。 源代码:

代码语言:txt
复制
CREATE OR REPLACE TYPE ty_str_split IS TABLE OF 
代码语言:txt
复制
CREATE OR REPLACE FUNCTION fn_var_split (
代码语言:txt
复制
    p_str IN 
代码语言:txt
复制
    p_delimiter IN 
代码语言:txt
复制
)
代码语言:txt
复制
 RETURN ty_str_split
代码语言:txt
复制
IS
代码语言:txt
复制
    j 
代码语言:txt
复制
 len 
代码语言:txt
复制
 str 
代码语言:txt
复制
    str_split ty_str_split := ty_str_split ();
代码语言:txt
复制
    v_str 
代码语言:txt
复制
BEGIN
代码语言:txt
复制
 len := LENGTH (v_str);
代码语言:txt
复制
 WHILE len > 
代码语言:txt
复制
    LOOP
代码语言:txt
复制
        j := INSTR (v_str, p_delimiter, 
代码语言:txt
复制
 IF j = 
代码语言:txt
复制
 THEN
代码语言:txt
复制
 str := SUBSTR (v_str, 
代码语言:txt
复制
 len := 
代码语言:txt
复制
            str_split.EXTEND;
代码语言:txt
复制
            str_split (str_split.COUNT) := str;
代码语言:txt
复制
 ELSE
代码语言:txt
复制
 str := SUBSTR (v_str, 
代码语言:txt
复制
            v_str := LTRIM (LTRIM (v_str, str), p_delimiter);
代码语言:txt
复制
 len := LENGTH (v_str);
代码语言:txt
复制
            str_split.EXTEND;
代码语言:txt
复制
            str_split (str_split.COUNT) := str;
代码语言:txt
复制
 END IF;
代码语言:txt
复制
 END LOOP;
代码语言:txt
复制
 RETURN str_split;
代码语言:txt
复制
END fn_var_split;
代码语言:txt
复制
/

测试 结果: 1 12 123 1234 12345

代码语言:txt
复制
DECLARE
代码语言:txt
复制
 CURSOR c
代码语言:txt
复制
 IS
代码语言:txt
复制
 SELECT * FROM TABLE (CAST (fn_var_split (';1;12;;123;;;1234;;;;12345;', ';') AS ty_str_split));
代码语言:txt
复制
    r c%ROWTYPE;
代码语言:txt
复制
BEGIN
代码语言:txt
复制
 OPEN c;
代码语言:txt
复制
    LOOP
代码语言:txt
复制
 FETCH c INTO r;
代码语言:txt
复制
 EXIT WHEN c%NOTFOUND;
代码语言:txt
复制
        DBMS_OUTPUT.put_line (r.column_value);
代码语言:txt
复制
 END LOOP;
代码语言:txt
复制
 CLOSE c;
代码语言:txt
复制
END;
代码语言:txt
复制
/
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年12月29日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档