Oracle中的Split函数

2022/4/1 19:19:38

本文主要是介绍Oracle中的Split函数,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

首先需要定义 2 个类型

1. Row 类型 CREATE OR REPLACE TYPE ty_row_str_split  as object (strValue VARCHAR2 (4000)) 2. Table 类型 CREATE OR REPLACE TYPE ty_tbl_str_split IS TABLE OF ty_row_str_split
创建函数:
复制代码 CREATE OR REPLACE FUNCTION fn_split(p_str       IN VARCHAR2,
                                    p_delimiter IN VARCHAR2)
  RETURN ty_tbl_str_split IS
  j         INT := 0;
  i         INT := 1;
  len       INT := 0;
  len1      INT := 0;
  str       VARCHAR2(4000);
  str_split ty_tbl_str_split := ty_tbl_str_split();
BEGIN
  len  := LENGTH(p_str);
  len1 := LENGTH(p_delimiter);


  WHILE j < len LOOP
    j := INSTR(p_str, p_delimiter, i);
  
    IF j = 0 THEN
      j   := len;
      str := SUBSTR(p_str, i);
      str_split.EXTEND;
      str_split(str_split.COUNT) := ty_row_str_split(strValue => str);
    
      IF i >= len THEN
        EXIT;
      END IF;
    ELSE
      str := SUBSTR(p_str, i, j - i);
      i   := j + len1;
      str_split.EXTEND;
      str_split(str_split.COUNT) := ty_row_str_split(strValue => str);
    END IF;
  END LOOP;


  RETURN str_split;
END fn_split;

复制代码
使用样例:
select to_number(strvalue) as Value from table(fn_split('1,2,3',','))
select to_char(strvalue) as Value from table(fn_split('aa,bb,cc',','))   select to_char(strvalue) as Value from 表 table(fn_split(表.字段,'$')) --------------------------------------------------- ***************************************** 方法2: ---------------------------------------------------- CREATE OR REPLACE TYPE type_split IS TABLE OF VARCHAR2 (4000)

 

复制代码 代码 create or replace 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; 原文:https://www.cnblogs.com/march3/archive/2009/07/23/1529442.html 实际测试过方法一

这篇关于Oracle中的Split函数的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程