读书人

oracle中兑现split函数(管道函数实现)

发布时间: 2012-09-07 10:38:15 作者: rapoo

oracle中实现split函数(管道函数实现)

至于管道函数的用法在上一遍文章已经介绍,在此不再细说.直接看函数.

1.创建type对象.

create or replace type type_split as table of varchar2(4000); 

2.创建split函数

create or replace function test_split(p_list VARCHAR2, p_sep VARCHAR2) return type_split   PIPELINED IS  l_idx  PLS_INTEGER;  v_list VARCHAR2(32767) := 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 test_split;

3.执行该函数

SELECT * FROM table(test_split('aaa,bbb,ccc',',')) ;

4.输出结果

    COLUMN_VALUE1     aaa2     bbb3           ccc

?

5.总结:此函数可以在存储过程(procedure)中使用,当遇到需要用逗号进行分隔的字符串,可以用这种方法就行查询,之后用游标(cursor)来分别提取每个字符串.

?

读书人网 >其他数据库

热点推荐