`
huangningren
  • 浏览: 44535 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

oracle 实现 split 函数 (返回数组)

阅读更多
元素为一个子串。

源代码:



CREATE OR REPLACE TYPE ty_str_split IS TABLE OF VARCHAR2 (4000);

CREATE OR REPLACE FUNCTION fn_split (p_str IN VARCHAR2, p_delimiter IN VARCHAR2)
  RETURN ty_str_split
IS
  j INT := 0;
  i INT := 1;
  len INT := 0;
  len1 INT := 0;
  str VARCHAR2 (4000);
  str_split ty_str_split := ty_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) := 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) := str;
    END IF;
  END LOOP;

  RETURN str_split;
END fn_split;
/

测试:

DECLARE
  CURSOR c
  IS
    SELECT *
      FROM TABLE (CAST (fn_split ('1;;12;;123;;1234;;12345', ';;') AS ty_str_split
                  )
              );

  r c%ROWTYPE;
BEGIN
  OPEN c;

  LOOP
    FETCH c INTO r;

    EXIT WHEN c%NOTFOUND;
    DBMS_OUTPUT.put_line (r.column_value);
  END LOOP;

  CLOSE c;
END;
/
 


结果:
1
12
123
1234
12345
分享到:
评论

相关推荐

    oracle_split_函数_返回数组

    在Oracle数据库中,由于内置函数不直接支持像Java中的`split`那样拆分字符串并返回数组,因此开发者需要自定义函数来实现这一功能。这里提到的两种方法都是为了解决这个问题,即根据指定的分隔符将字符串拆分为一个...

    Oracle中实现Split函数功能

    Oracle 中实现 Split 函数功能 Oracle 中实现 Split 函数功能是指在 Oracle 数据库中实现类似于 C# 等编程语言中的 Split 函数,用于拆分字符的功能。下面是实现 Oracle 中 Split 函数功能的详细介绍。 首先,...

    oracle split函数

    在Oracle数据库中,并没有内置的split函数来处理字符串的分割操作。然而,在实际应用中,经常需要将一个包含多个值的字符串按照指定的分隔符进行拆分,转换为表格式的数据,以便进行进一步的处理或查询。为此,可以...

    Oracle 自定义split 函数实例详解

    函数的主要任务是将`p_str`按照`p_delimiter`进行切割,并返回一个`ty_str_split`类型的数组: ```sql CREATE OR REPLACE FUNCTION fn_var_split ( p_str IN VARCHAR2, p_delimiter IN VARCHAR2) RETURN ty_str_...

    字符串分割成数组函数(plsql function)

    将字符串分割成数组: 例如将字符串“7369,7499,7521,7844"分割成 7369 7499 ...select * from scott.emp where empno in (select column_value from table(my_split('7369,7499,7521,7844',',')));

    oracle分隔字符串函数

    本文将详细介绍如何在 Oracle 中实现字符串分隔功能,并通过创建一个自定义的函数来实现这一目标。 #### 二、需求背景 假设我们有一个包含逗号分隔的字符串列表,需要将其拆分为单独的字符串值以便进一步处理。...

    oracle字符串分割自定义函数

    oracle中没有方便分割字符串的的函数,仿照c#中的split方法和网友的方法,并进行了改进,(1)先自定义个类型str_split,(2)分割函数splitstr,返回table;(3)取第n个数组的get_splitstr,用户1,2,3部建好,使用时只需要...

    plsql分割字符串

    自定义函数`FUNCTION_SF_SPLIT_STRING`如上所示,是一个典型的用于分割字符串的函数,它接受两个参数:待分割的字符串`STRING`和用作分隔符的子字符串`SUBSTRING`,返回一个`VARCHAR2`类型的数组,其中包含了分割后...

    oracle学习笔记

    5. **PL/SQL中的INDEX BY TABLE**:在Oracle的PL/SQL块中,可以创建索引数组,比如`type numbers is table of number index by binary_integer;`这样的声明定义了一个可以动态扩展的数组,其中的下标由二进制整数...

    PL/SQL实现JAVA中的split()方法的例子

    在Java编程语言中,`split()`方法是String类的一个重要成员,它允许开发者根据指定的分隔符将字符串拆分为一个字符串数组。然而,在Oracle的PL/SQL环境中,并没有直接对应的函数来完成相同的功能。因此,当需要在PL/...

    orcale数据库中的函数

    Oracle 数据库是一个强大的关系型数据库管理系统,它提供了丰富的内置函数,便于用户进行数据处理和操作。以下是一些在 Oracle 数据库中常用的字符串处理函数的详细解释: 1. **AddSlashes()**: 这个函数用于在字符...

    查询oracle中所有用户信息

    **命令:** `select text from all_source where owner = user and name = 'SF_SPLIT_STRING';` 此命令用于查看特定函数的源代码,对于开发和调试非常重要。 #### 二十七、查看表中的列 **命令:** `select column_...

    Perl 实例精解(第三版).pdf

    4.4.12 split函数 4. 4.13 sort函数 4.4.14 reverse函数 4.4.15 unshift函数 4.5 散列(关联数组)函数 4.5.1 keys函数 4.5.2 values函数 4.5.3 each函数 4.5.4 delete函数 4.5.5 exists...

    PL_SQL文件

    - **步骤2**:创建函数 `SPLIT`,该函数接受两个参数 `P_LIST`(待分割的字符串)和 `P_SEP`(分隔符,默认为逗号),并返回类型 `TYPE_SPLIT` 的数组。 - **函数逻辑**:通过循环遍历字符串,查找分隔符的位置,...

    plsql中的字符串分割.txt

    通过`INSTR`和`SUBSTR`函数组合,函数能够有效地将原始字符串分割成多个子字符串,并将这些子字符串存储在返回的游标中。 通过以上详细的解释和示例代码,我们已经全面了解了如何在PL/SQL中实现字符串分割的功能。...

    JDK7 API 下载(我从oracle官网上下下来的)

    字符串处理在JDK7中得到了加强,如`String.join()`方法用于方便地连接字符串数组,`String.split()`方法的正则表达式改进,以及`String.contains()`、`String.startsWith()`和`String.endsWith()`等方法的优化。...

    php网络开发完全手册

    13.3.2 ORACLE 207 13.3.3 SYBASE 207 13.3.4 DB2 207 13.3.5 SQL Server 207 13.4 SQL语言简介 207 13.5 常见的数据库设计问题 208 13.6 关系型数据库的设计原则 209 13.6.1 第一范式(1NF) 209 13.6.2 第二范式...

    JAVA+ORALCE面试题汇总

    - **处理响应**:当服务器响应到达时,通过回调函数处理返回的数据。 - **更新页面**:根据处理后的数据更新页面的部分内容。 #### 13. AJAX与ExtJS的关系 ExtJS是一个用于构建复杂Web应用程序的JavaScript库。它...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    传统上网页的交互作用是通过CGI来实现的。CGI程序的伸缩性不很理想,因为它为每一个正在运行的CGI程序开一个独立进程。解决方法就是将经常用来编写CGI程序的语言的解释器编译进你的web服务器(比如mod_perl,JSP)。PHP...

Global site tag (gtag.js) - Google Analytics