`
wshyj18
  • 浏览: 165427 次
  • 性别: 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;

 


测试:
SELECT * FROM TABLE (CAST (fn_split ('1;;12;;123;;1234;;12345', ';;') AS ty_str_split));

结果:

1
12
123
1234
12345

 

如果我们查寻条件是这样:100~200-100-200-200~300-200-300',

                      它表示,在100到200之间的,100<x<200

                                 在200到300之间的,200<x<300

如果我们想进行 行转列,可以使入如下语句

select max(case subject when 0 then rv else '0' end) as rangeName ,max(case subject when 1 then rv else '0' end) as from_v,max(case subject when 2 then rv else '0' end) as to_v
from
(
select Column_value as rv ,trunc((rownum-1)/3) as name,MOD(rownum-1,3) as subject from(
SELECT * FROM TABLE (CAST (fn_split ('100~200-100-200-200~300-200-300', '-') AS ty_str_split)))
) group by name

结果是这样的:

100~200 100 200
200~300 200 300

分享到:
评论

相关推荐

    oracle_split_函数_返回数组

    这两种自定义函数可以帮助开发者将字符串按指定分隔符拆分成数组,从而进行后续的数据处理和分析。需要注意的是,由于PL/SQL语言的限制,这些方法可能不如Java或其他支持内置字符串处理函数的语言那么直接和高效,但...

    Oracle中实现Split函数功能

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

    oracle split函数

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

    Oracle,Split

    本文将详细介绍如何在Oracle中实现类似于.NET中的`Split`函数,并通过一个具体的SQL查询示例来展示其实现过程。 #### 一、背景介绍 在.NET框架中,`string.Split`方法被广泛用于将字符串根据指定的分隔符拆分为多...

    oracle ebs Split An Order Line

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

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

    将字符串分割成数组: 例如将字符串“7369,7499,7521,7844"分割成 7369 7499 7521 7844 用法:可以将分割结果做为一个数组或者数据库表列来使用 select * from scott.emp where empno in (select column_value from...

    oracle split 函数

    本篇文章将详细介绍如何在Oracle中实现一个名为`split`的函数来完成字符串的分割,并将其结果以表的形式返回。 #### 二、Oracle Split函数设计原理 ##### 2.1 数据类型定义 为了能够返回一个表形式的结果,首先...

    Oracle 自定义split 函数实例详解

    Oracle 自定义split 函数 Oracle没有提供split函数,但可以自己建立一个函数实现此功能。比如“abc defg hijkl nmopqr stuvw xyz”,分隔符是空格,但空格个数不定。 源代码: CREATE OR REPLACE TYPE ty_str_...

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

    4、易于集成:函数设计简洁,易于集成到现有的Oracle数据库系统中,无需复杂的配置和改造。 5、优化查询性能:通过避免复杂的子查询和嵌套循环,我们的函数显著提升了数据处理的速度,减少了数据库资源的消耗,让您...

    Oracle RAC ASM磁盘组故障解决办法

    本文旨在解决 Oracle RAC 环境中的磁盘组故障问题,具体来说是解决磁盘无法挂载、集群服务无法启动的问题。通过对问题的分析和解决,文章将从问题的背景、问题描述、故障解决步骤等方面进行详细的讲解。 1. 问题...

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

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

    Toad for Oracle 中文使用指南

    - **使用代码**:介绍如何在 Toad for Oracle 中编写和运行 SQL 和 PL/SQL 代码。 - **调试 PL/SQL**:提供详细的 PL/SQL 调试教程,帮助用户定位和解决代码问题。 - **使用数据库对象**:解释如何在 Toad 中浏览和...

    oracle中文手册合集(CHM)

    Oracle官方SQL参考手册、oracle函数大全、Ora9iSQL参考手册、oracle函数大全(分类显示)、Oracle函数大全、Oracle函数手册、ORACLE九阴真经、oracle知识库、SQLCodes-Oracle错误代码与消息解释、SQL语言参考大全,10...

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

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

    建立用户组保证Oracle数据库安全性

    在操作系统层面建立用户组是实现这一目标的有效手段,特别是在Unix环境中。本文主要围绕如何通过用户组管理来增强Oracle数据库的安全性进行阐述。 首先,Oracle程序通常分为两类:一类是所有用户都可以执行的公共...

    oracle组播测试工具

    oracle组播测试工具,可用!

    linux下向oracle中导入dmp文件

    在实际工作中,我们经常需要将 dmp 文件导入到 Oracle 数据库中。下面我们将详细介绍如何在 Linux 下向 Oracle 数据库中导入 dmp 文件。 首先,我们需要登录 Linux 系统,以 oracle 用户登录。如果我们以 root 用户...

    oracle11g官方中文文档完整版

    Oracle 数据库 11g 中的分区.pdf Oracle 数据库 11g:可管理性概述.pdf Oracle 数据库 11g:新特性概述.pdf Oracle 真正应用集群 11g .pdf Oracle高级压缩.pdf Oracle性能优化包 11g .pdf Oracle真正应用测试...

    Toad for Oracle 12.8简体中文语言包

    在Oracle数据库管理系统中,Toad for Oracle扮演着至关重要的角色。它简化了SQL编写,提供了代码自动完成和语法高亮,使得数据库操作更为高效。用户可以通过其用户友好的界面来浏览数据库结构、执行查询、管理用户...

Global site tag (gtag.js) - Google Analytics