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
分享到:
相关推荐
这两种自定义函数可以帮助开发者将字符串按指定分隔符拆分成数组,从而进行后续的数据处理和分析。需要注意的是,由于PL/SQL语言的限制,这些方法可能不如Java或其他支持内置字符串处理函数的语言那么直接和高效,但...
Oracle 中实现 Split 函数功能 Oracle 中实现 Split 函数功能是指在 Oracle 数据库中实现类似于 C# 等编程语言中的 Split 函数,用于拆分字符的功能。下面是实现 Oracle 中 Split 函数功能的详细介绍。 首先,...
在Oracle数据库中,并没有内置的split函数来处理字符串的分割操作。然而,在实际应用中,经常需要将一个包含多个值的字符串按照指定的分隔符进行拆分,转换为表格式的数据,以便进行进一步的处理或查询。为此,可以...
本文将详细介绍如何在Oracle中实现类似于.NET中的`Split`函数,并通过一个具体的SQL查询示例来展示其实现过程。 #### 一、背景介绍 在.NET框架中,`string.Split`方法被广泛用于将字符串根据指定的分隔符拆分为多...
在Oracle E-Business Suite(EBS)中,订单管理模块的订单行分割是一个常见需求,尤其是当一个订单行需要被分解成多个部分来处理时。文档中描述的脚本基于OE_ORDER_PUB包,该包是Oracle Order Management的一部分。...
将字符串分割成数组: 例如将字符串“7369,7499,7521,7844"分割成 7369 7499 7521 7844 用法:可以将分割结果做为一个数组或者数据库表列来使用 select * from scott.emp where empno in (select column_value from...
本篇文章将详细介绍如何在Oracle中实现一个名为`split`的函数来完成字符串的分割,并将其结果以表的形式返回。 #### 二、Oracle Split函数设计原理 ##### 2.1 数据类型定义 为了能够返回一个表形式的结果,首先...
Oracle 自定义split 函数 Oracle没有提供split函数,但可以自己建立一个函数实现此功能。比如“abc defg hijkl nmopqr stuvw xyz”,分隔符是空格,但空格个数不定。 源代码: CREATE OR REPLACE TYPE ty_str_...
4、易于集成:函数设计简洁,易于集成到现有的Oracle数据库系统中,无需复杂的配置和改造。 5、优化查询性能:通过避免复杂的子查询和嵌套循环,我们的函数显著提升了数据处理的速度,减少了数据库资源的消耗,让您...
本文旨在解决 Oracle RAC 环境中的磁盘组故障问题,具体来说是解决磁盘无法挂载、集群服务无法启动的问题。通过对问题的分析和解决,文章将从问题的背景、问题描述、故障解决步骤等方面进行详细的讲解。 1. 问题...
在Oracle数据库中,由于默认的SQL语法并不支持像JavaScript或.NET框架中那样直接对字符串进行`split`操作,所以在处理批量操作时,需要通过自定义函数来实现类似的功能。这里介绍的方法是创建两个用户自定义函数,即...
- **使用代码**:介绍如何在 Toad for Oracle 中编写和运行 SQL 和 PL/SQL 代码。 - **调试 PL/SQL**:提供详细的 PL/SQL 调试教程,帮助用户定位和解决代码问题。 - **使用数据库对象**:解释如何在 Toad 中浏览和...
Oracle官方SQL参考手册、oracle函数大全、Ora9iSQL参考手册、oracle函数大全(分类显示)、Oracle函数大全、Oracle函数手册、ORACLE九阴真经、oracle知识库、SQLCodes-Oracle错误代码与消息解释、SQL语言参考大全,10...
Erp/Ehr/Crm/Clm系统的开发者很多时候会用到姓名拆分为汉语拼音的代码。 这个函数可以帮你实现以下内容。...select fn_getpy( F_namesplit('张三',1),2) as 姓,fn_getpy( F_namesplit('张三',2),2) as 名 from dual
在操作系统层面建立用户组是实现这一目标的有效手段,特别是在Unix环境中。本文主要围绕如何通过用户组管理来增强Oracle数据库的安全性进行阐述。 首先,Oracle程序通常分为两类:一类是所有用户都可以执行的公共...
oracle组播测试工具,可用!
在实际工作中,我们经常需要将 dmp 文件导入到 Oracle 数据库中。下面我们将详细介绍如何在 Linux 下向 Oracle 数据库中导入 dmp 文件。 首先,我们需要登录 Linux 系统,以 oracle 用户登录。如果我们以 root 用户...
Oracle 数据库 11g 中的分区.pdf Oracle 数据库 11g:可管理性概述.pdf Oracle 数据库 11g:新特性概述.pdf Oracle 真正应用集群 11g .pdf Oracle高级压缩.pdf Oracle性能优化包 11g .pdf Oracle真正应用测试...
在Oracle数据库管理系统中,Toad for Oracle扮演着至关重要的角色。它简化了SQL编写,提供了代码自动完成和语法高亮,使得数据库操作更为高效。用户可以通过其用户友好的界面来浏览数据库结构、执行查询、管理用户...