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

oracle split function

 
阅读更多

PL/SQL 中没有split函数,需要自己写。

 

CREATE OR REPLACE TYPE str_split IS TABLE OF VARCHAR2 (4000)
 

 

 

CREATE OR REPLACE FUNCTION splitstr(p_string IN VARCHAR2,
p_delimiter IN VARCHAR2)
RETURN str_split
PIPELINED
AS
v_length NUMBER := LENGTH(p_string);
v_start NUMBER := 1;
v_index NUMBER;
BEGIN
LOOP
v_index := INSTR(p_string, p_delimiter, v_start);
IF v_index = 0
THEN
PIPE ROW(SUBSTR(p_string, v_start));
EXIT;
ELSE
PIPE ROW(SUBSTR(p_string, v_start, v_index - v_start));
v_start := v_index + 1;
END IF;
END LOOP;
RETURN;
END splitstr;
 

 

 

测试:

 

SQL> select * from table(split('northsnow,塞北的雪',','));

 

COLUMN_VALUE

-------------------------------------------------

northsnow

 

塞北的雪

 

SQL> 



补充: 
-----PIPELINED关键字是什么意思? 
---- pipe row是什么意思?

pipelined声名此function是pipe的,如果这么声名了,就必须使用pipe row的方式把数据返回,常规函数最后的"return 变量",就变成了"return". 

pipelined的function主要是为了提高效率,不用等所有的数据都处理完成了才返回客户端,它是边处理边返回.适用于大数据量的交互

 

分享到:
评论

相关推荐

    Oracle中实现Split函数功能

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

    oracle split函数

    ### Oracle Split 函数详解 #### 一、Oracle Split 函数简介 在Oracle数据库中,并没有内置的split函数来处理字符串的分割操作。然而,在实际应用中,经常需要将一个包含多个值的字符串按照指定的分隔符进行拆分,...

    oracle_split_函数_返回数组

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

    oracle split 函数

    create or replace function split(p_list varchar2, p_sep varchar2 := ';') return type_split pipelined is l_idx pls_integer; v_list varchar2(500) := p_list; begin loop l_idx := instr(v_list, p_sep);...

    Oracle 自定义split 函数实例详解

    Oracle 自定义split 函数 Oracle没有提供split函数,但可以自己建立一个函数实现此功能。...CREATE OR REPLACE FUNCTION fn_var_split ( p_str IN VARCHAR2, p_delimiter IN VARCHAR2 ) RETURN ty_str_split IS

    给Oracle添加split和splitstr函数的方法

    在Oracle数据库中,由于默认的SQL语法并不支持像JavaScript或.NET框架中那样直接对字符串进行`split`操作,所以在处理批量操作时,需要通过自定义函数来实现类似的功能。这里介绍的方法是创建两个用户自定义函数,即...

    用Pipelined Table实现split函数的示例

    通过本示例,我们了解了如何使用Oracle中的Pipelined Table Function来实现一个高效的split函数。这种方法不仅可以简化字符串处理的任务,还可以显著提高处理大量数据时的性能。在实际应用中,根据不同的需求,我们...

    oracle数据库自定义split函数和调用具体实现

    CREATE OR REPLACE FUNCTION job_split(p_str VARCHAR2, p_delimiter VARCHAR2 DEFAULT '/') RETURN type_str IS rs type_str := type_str(); l_str VARCHAR2(3000) := p_str; l_len NUMBER := 0; BEGIN l_len :...

    添加split和splitstr函数-oracle培训.pdf

    在本文中,我们将探讨如何在Oracle中添加`split`和`splitstr`这两个自定义函数,以优化批量操作的性能。 首先,我们需要创建一个名为`tabletype`的表类型,用于存储分割后的字符串元素: ```sql create or replace...

    oracle分隔字符串函数

    ### Oracle 分隔字符串函数知识点详解 #### 一、Oracle 分隔字符串函数介绍 在 Oracle 数据库中处理字符串是一项常见的需求,特别是在数据清洗、格式转换等场景下。Oracle 提供了一系列强大的字符串处理函数来帮助...

    详解oracle管道函数的用法(一行拆为多行)

    如果需要在客户端实时的输出函数执行过程中的一些信息,在oracle9i以后可以使用管道函数(pipeline function)。 关键字PIPELINED表明这是一个oracle管道函数,oracle管道函数的返回值类型必须为集合 --创建一个集合...

    Oracle行转列

    Oracle行转列 Oracle行转列是指在Oracle...Oracle行转列操作可以使用多种方法来实现,包括UNION ALL、MODEL、COLLECTION、AGGREGATE FUNCTION、LISTAGG、REGEXP_SPLIT等方法。这些方法可以满足不同的应用场景和需求。

    Oracle用户数据字典以及查询表字段

    - `select object_name, status from user_objects where object_type = 'FUNCTION';` - 显示当前用户创建的所有函数的状态信息。这对于理解函数的状态非常有用。 - `select object_name, status from user_...

    如何实现Oracle中字符串分隔.pdf

    在Oracle数据库中,字符串处理是常见的操作之一,特别是在数据处理和分析中。本文将详细介绍如何在Oracle中实现字符串分隔,以及提供一个实用的面向对象的解决方案。 在Oracle中,字符串分隔通常涉及到将一个长字符...

    oracle数据行列转换

    CREATE OR REPLACE FUNCTION split_category(p_categories VARCHAR2) RETURN SYS_REFCURSOR AS v_rc SYS_REFCURSOR; BEGIN OPEN v_rc FOR WITH cte AS ( SELECT REGEXP_SUBSTR(p_categories, '[^,]+', 1, level)...

    查询oracle中所有用户信息

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

    字符串分割成数组函数(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行列转换总结

    使用 AGGREGATE FUNCTION 语句: ```sql SELECT id, MAX(decode(cn, 'c1', cv, NULL)) AS c1, MAX(decode(cn, 'c2', cv, NULL)) AS c2, MAX(decode(cn, 'c3', cv, NULL)) AS c3 FROM t_row_col GROUP BY id; ```...

Global site tag (gtag.js) - Google Analytics