`
flforever1213
  • 浏览: 124665 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Oracle 实现拆分列数据的split()方法

阅读更多

保存在这里,方便自己以后查看 (⊙_⊙) ╮(╯▽╰)╭

 

-- 创建需要划分的字符串
with T1 as(
   select 'one,two,three,four,five,six,seven,eight,nine,zero' as source_string
     from dual),
   
-- 统计字符串中子串的个数,用 ',' 来划分子串
T2 as(
   select regexp_count(source_string, '[^,]+') as source_substring_count
     from T1),
   
-- 根据子串的个数创建索引列,用于给T4的regexp_substr()方法索引
T3 as(
   select rownum as row_number
     from dual, T2
   connect by rownum <= T2.source_substring_count),
   
-- 根据每个索引值逐个截取字符串
T4 as(
   select T3.row_number as substring_index,
          regexp_substr(T1.source_string, '[^,]+', 1, T3.row_number) as substring
     from T1, T3)
   
select substring_index, substring from T4;

 

鉴于 regexp_count() 方法是 Oracle 11g 才新加上的,之前的版本并没有,这里再用另一种方法来统计子串的个数:

-- 创建需要划分的字符串
with T1 as(
   select 'one,two,three,four,five,six,seven,eight,nine,zero' as source_string
     from dual),
   
-- 统计字符串中子串的个数
-- 字符串中','字符用''代替后,其减少的长度自然就是原串中','字符的个数
T2 as(
   select length(T1.source_string) - length(replace(T1.source_string, ',', '')) + 1
          as source_substring_count
     from T1),
   
-- 根据子串的个数创建索引列,用于给T4的regexp_substr()方法索引
T3 as(
   select rownum as row_number
     from dual, T2
   connect by rownum <= T2.source_substring_count),
   
-- 根据每个索引值逐个截取字符串
T4 as(
   select T3.row_number as substring_index,
          regexp_substr(T1.source_string, '[^,]+', 1, T3.row_number) as substring
     from T1, T3)
   
select substring_index, substring from T4;
 

运行结果:

1
7
分享到:
评论

相关推荐

    Oracle中实现Split函数功能

    Oracle 中实现 Split 函数功能是指在 Oracle 数据库中实现类似于 C# 等编程语言中的 Split 函数,用于拆分字符的功能。下面是实现 Oracle 中 Split 函数功能的详细介绍。 首先,需要创建一个新的类型来存储拆分后...

    Oracle 姓名自动拆分为汉语拼音函数

    Erp/Ehr/Crm/Clm系统的开发者很多时候会用到姓名拆分为汉语拼音的代码。 这个函数可以帮你实现以下内容。...select fn_getpy( F_namesplit('张三',1),2) as 姓,fn_getpy( F_namesplit('张三',2),2) as 名 from dual

    oracle_split_函数_返回数组

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

    Oracle行转列

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

    Oracle函数:根据自定义分隔符拆分字段SPLIT-STR()然后查询检索数据库表数据

    6、灵活的数据检索:不仅能拆分字段,还能根据您的需求检索出特定的数据项,无论是查找、统计还是进一步处理,都能轻松应对。 7、高效字段拆分:此函数能够迅速将字段中的多个值按逗号或其他自定义分隔符拆分成独立...

    Oracle 分割字符串 返回多行数据

    Oracle 分割字符串 返回多行数据

    oracle split函数

    本文将详细介绍两种在Oracle中实现字符串分割的方法:第一种是通过创建类型和管道函数的方式;第二种则是通过循环和子字符串处理实现的。 #### 二、第一种实现方式:创建类型和管道函数 ##### 1. 创建类型 `TY_STR...

    Oracle拆分字符串,字符串分割的函数

    在Oracle数据库中,处理字符串是常见的操作之一,尤其是在数据分析或数据清洗的过程中。有时我们需要将一个长字符串分割成多个部分,以便进行进一步的操作。Oracle提供了一些内置的函数来帮助我们完成这个任务。本篇...

    Oracle,Split

    而在Oracle数据库中,并没有内置的直接等效于.NET中`Split`的方法,因此我们需要使用SQL语句结合一些字符串处理函数来实现类似的功能。下面将具体介绍如何在Oracle中实现字符串分割。 #### 二、实现原理 为了实现...

    oracle ebs Split An Order Line

    在Oracle E-Business Suite(EBS)中,订单管理模块的订单行分割是一个常见需求,尤其是当一个订单行需要被分解成多个部分来处理时。文档中描述的脚本基于OE_ORDER_PUB包,该包是Oracle Order Management的一部分。...

    Oracle逗号分隔列转行实现方法

    Oracle数据库在处理逗号分隔列转行的问题时,提供了一种高效且灵活的方法,尤其适用于需要从存储多个值...总的来说,Oracle的这种逗号分隔列转行方法是一种实用的技巧,能够提高查询性能并简化处理复杂数据结构的逻辑。

    oracle数据行列转换

    例如,如果我们有一个包含多个产品分类的列,希望将其拆分为多行,可以使用以下方法: ```sql -- 使用CONNECT BY模拟LISTAGG WITH categories (product_id, category_list) AS ( SELECT product_id, replace...

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

    在Oracle数据库中,有时我们需要对字符串进行拆分处理,以便于处理包含多个元素的数据。例如,在给定的场景中,有一个名为`JOB_NUMBER`的字段,它存储的是多个工号,以特定的分隔符(如斜杠"/")分隔。需求是创建一...

    oracle分隔字符串函数

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

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

    SQL 字符串分割函数实现多行数据转换 在数据库中,经常会遇到将一个字段中的特殊字符分割的字符串转换成多行数据的情况。这是一个常见的需求,但是网上提供的解决方案往往非常复杂,难以理解和实现。为了解决这个...

    Oracle 自定义split 函数实例详解

    通过这个自定义的`fn_var_split`函数,我们可以在Oracle数据库中方便地处理字符串,将一个大字符串按照指定的分隔符拆分成多个子字符串,适用于需要对字符串进行分组或处理的场景。这种自定义函数的方法不仅可以提高...

    张乐奕 - Oracle 12.2 Sharded Database Managemen

    根据提供的文件信息,我们可以提炼出以下IT知识点: 1. Oracle 12.2 Sharded Database ...通过了解和应用Sharding技术,企业可以实现高效的系统扩展、数据隔离、成本控制,并能够在多个区域实现数据的快速访问。

    导入txt文件到oracle数据库

    Java的`String`类提供了丰富的方法来操作字符串,例如`substring()`用于截取字符串的一部分,`split()`用于根据特定的分隔符拆分字符串。 进入核心部分,Map是一种数据结构,它存储键值对,允许以O(1)的时间复杂度...

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

    而`split`函数虽然在提供的内容中没有具体的实现,但通常它会与`splitstr`类似,用于将字符串按照某种规则拆分成数组或集合类型,以便于进一步的处理。 在处理大数据量时,这样的自定义函数尤其有用,因为它们避免...

    Oracle 分区表自动维护脚本

    这种脚本可以执行多个维护任务,包括但不限于:增加新分区、删除历史分区、拆分分区和数据清除等操作。分区表是Oracle数据库中的一种高效数据管理技术,它将大型表划分为较小的、易于管理的部分,称为分区。通过分区...

Global site tag (gtag.js) - Google Analytics