`
gpqhl0071
  • 浏览: 54738 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

oracle中使用FUNCTION方法做String的SPLIT功能

 
阅读更多
  今天在处理两个系统间数据同步问题时,遇到了数据内使用逗号间隔(如:1,2,3),同步到另一个系统是另一种格式(如:0100000000,不同的位置业务规则不一样),这时就要将逗号间隔的内容使用类似与java中String字符串的split方法拆分,但是oracle没有类似的方法,通过查询在网上搜索了一个FUNCTION,很好用。

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;


因为是FUNCTION,在访问的时候必须写在SQL中,(刚开始还向用PROCEDURE那样直接用)
--调用以上FUNCTION的方法。
select * from table(fn_split('1,2,3'),',');
最终返回的就是去掉逗号之后的数组(和SPLIT方法一样)。
分享到:
评论

相关推荐

    oracle分隔字符串函数

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

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

    在Oracle数据库中,字符串处理是常见的操作之一,特别是在数据...总的来说,Oracle中实现字符串分隔的方法多样,可以根据具体需求选择合适的方法。对于大量或复杂的数据处理,封装好的包可以提高代码的可读性和维护性。

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

    通过上述查询,我们可以了解到Oracle数据库中不同数据字典视图的功能,以及如何利用它们来查询表结构和其他相关信息。这些查询对于数据库开发人员和管理员来说都是非常宝贵的工具,可以帮助他们更好地管理数据库环境...

    plsql分割字符串

    在实际应用中,`FUNCTION_SF_SPLIT_STRING`可以非常灵活地用于各种需要对字符串进行分割的场景,例如解析CSV数据、处理配置文件等。然而,需要注意的是,这个函数并不支持连续的分隔符,也就是说,如果分隔符连续...

    查询oracle中所有用户信息

    本文将详细介绍如何使用SQL命令来查询Oracle数据库中用户的各类信息,包括但不限于基本用户信息、用户权限、表空间分配等。 #### 二、查询所有用户基本信息 **命令:** `select * from dba_users;` 此命令用于查询...

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

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

    plsql中的字符串分割.txt

    CREATE OR REPLACE FUNCTION split_string(p_input_string IN VARCHAR2, p_delimiter IN VARCHAR2) RETURN SYS_REFCURSOR AS l_result SYS_REFCURSOR; l_position NUMBER := 1; BEGIN OPEN l_result FOR SELECT ...

    SQL 语句 将一个表中用特殊字符分割的字段转换成多行数据.docx

    SQL 字符串分割函数实现多行数据转换 ...通过这个示例,我们可以看到,使用 `StringSplit` 函数可以轻松地将一个字段中的特殊字符分割的字符串转换成多行数据。这个函数可以广泛应用于各种数据库应用场景中。

    oracle 函数判断字符串是否包含图片格式的实例代码

    总结起来,本文介绍了如何在Oracle中使用自定义函数来检查字符串是否包含图片格式。通过创建`fn_split`和`fn_ispng`这两个函数,我们可以方便地处理字符串,判断其中是否存在特定的图片扩展名。这在数据处理和验证...

    PL_SQL文件

    - **方法一**:使用自定义类型 `TYPE_SPLIT` 和函数 `SPLIT` 来实现。 - **步骤1**:定义类型 `TYPE_SPLIT AS TABLE OF VARCHAR2(50);`,这个类型将用于存储分割后的字符串数组。 - **步骤2**:创建函数 `SPLIT`,...

    SqlServer生成连续数字根据指定的数字操作

    Oracle数据库中可以通过ROWNUM伪列轻松实现这一功能,但在SQL Server中,我们需要采用不同的方法来达到相同的效果。以下将详细介绍如何在SQL Server中生成连续数字。 1. **使用MASTER..spt_values方式**: SQL ...

    富基融通JAVA软件工程师面试题(2011.12)

    String[] numbers = input.split(","); int[] nums = Arrays.stream(numbers).mapToInt(Integer::parseInt).toArray(); // 升序 Arrays.sort(nums); System.out.println("升序:" + Arrays.toString(nums)); ...

    java面试题

    String url = "jdbc:oracle:thin:@localhost:1521:orcl"; String user = "username"; String password = "password"; Connection conn = DriverManager.getConnection(url, user, password); ...

    淘宝笔试题

    - 8i版本中使用`SORT_AREA_SIZE`参数,9i版本中使用`SORT_AREA_RETAINED_SIZE`。 - 临时表空间用于存储排序和聚合操作产生的中间结果。 11. **表空间与数据文件的关系:** - 表空间是由一个或多个数据文件组成的...

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

    所有变量都是局部变量,为了使得定义的函数中可以使用外部变量,使用global语句。而你要将该变量的作用范围限制在该函数之内,使用static语句。 $g_var = 1 ; // 全局范围 function test() { global $g_var; // 这样...

    不固定参数的存储过程实现代码

    一种解决方法是使用字符串参数,如示例中的`StatProductInfo`存储过程所示。该存储过程接收一个`VARCHAR(8000)`类型的参数`@ids`,期望它包含以逗号分隔的商品ID。存储过程内部,使用`IN()`运算符来检查`ProductID`...

    Using Perl For Web Programming.pdf

    Processing QUERY_STRING into Useful Chunks H Using Regular Expressions tr/// and s/// H Printing the Page H Creating a Script on Your Web Server H Calling a CGI Script Directly H Limiting Data-...

Global site tag (gtag.js) - Google Analytics