Oracle 创建 split 和 splitstr 函数
Sql语句最好依次执行创建
/**************************************
* name: split
* author: sean zhang.
* date: 2012-09-03.
* function: 返回字符串被指定字符分割后的表类型。
* parameters: p_list: 待分割的字符串。
p_sep: 分隔符,默认逗号,也可以指定字符或字符串。
* example: select * from users where u_id in (select column_value from table (split ('1,2')))
返回u_id为1和2的两行数据。
**************************************/
/* 创建一个表类型 */
create or replace type tabletype as table of varchar2(32676)
/* 创建 split 函数 */
create or replace function split (p_list clob, p_sep varchar2 := ',')
return tabletype
pipelined
is
l_idx pls_integer;
v_list varchar2 (32676) := p_list;
begin
loop
l_idx := instr (v_list, p_sep);
if l_idx > 0
then
pipe row (substr (v_list, 1, l_idx - 1));
v_list := substr (v_list, l_idx + length (p_sep));
else
pipe row (v_list);
exit;
end if;
end loop;
end;
/**************************************
* name: splitstr
* author: sean zhang.
* date: 2012-09-03.
* function: 返回字符串被指定字符分割后的指定节点字符串。
* parameters: str: 待分割的字符串。
i: 返回第几个节点。当i为0返回str中的所有字符,当i 超过可被分割的个数时返回空。
sep: 分隔符,默认逗号,也可以指定字符或字符串。当指定的分隔符不存在于str中时返回sep中的字符。
* example: select splitstr('abc,def', 1) as str from dual; 得到 abc
select splitstr('abc,def', 3) as str from dual; 得到 空
**************************************/
/* 创建 splitstr 函数 */
create or replace function splitstr(str in clob,
i in number := 0,
sep in varchar2 := ',') return varchar2 is
t_i number;
t_count number;
t_str varchar2(4000);
begin
if i = 0 then
t_str := str;
elsif instr(str, sep) = 0 then
t_str := sep;
else
select count(*) into t_count from table(split(str, sep));
if i <= t_count then
select str
into t_str
from (select rownum as item, column_value as str
from table(split(str, sep)))
where item = i;
end if;
end if;
return t_str;
end;
示例:split(字符串,标识)
select split('a,b,c,e,d,f,g') arrData from dual;
默认使用逗号分割,可以自定义修改,如:select split('X-rapido & Lemon','&') arrData from dual;
点开集合
默认使用逗号分割,可以自定义修改,如:select split('X-rapido & Lemon','&') arrData from dual;
示例:splitstr(字符串,获取的节点下标,分隔符)
select splitstr('X-rapido&Lemon&Jennifer', 1, '&') word from dual; -- X-rapido
select splitstr('X-rapido&Lemon&Jennifer', 2, '&') word from dual; -- Lemon
select splitstr('X-rapido&Lemon&Jennifer', 3, '&') word from dual; -- Jennifer
select splitstr('X-rapido&Lemon&Jennifer', 4, '&') word from dual; -- 空字符串
Oracle 创建 split 和 splitstr 函数相关推荐
- splitstr oracle,Oracle 创建 split 和 splitstr 函数
Sql语句最好依次执行创建/************************************** * name: split * author: sean zhang. ...
- java oracle 流水号_Oracle生成流水号函数
一.参考 1:日期范围上 smalldatetime的有效时间范围1900/1/1~2079/6/6 datetime的有效时间范围1753/1/1~9999/12/31 2:精准度上 smallda ...
- Oracle 创建函数的权限
Oracle 创建函数时提示 ORA-01031: insufficient privileges 错误,需管理员用户给当前用户增加创建 procedure 的权限,function 跟 proced ...
- oracle创建包 和调用,oracle创建函数和调用存储过程和调用函数的例子(区别)...
创建函数: 格式:create or replace function func(参数 参数类型) Return number Is Begin --------业务逻辑--------- End; ...
- (2)存储过程中可以调用其他存储过程吗?_详解Oracle创建存储过程、创建函数、创建包及实例演示...
概述 说句实在的,平时工作基本上不会去背啥创建存储过程.创建函数.创建包之类的语法,但是相信大家面试啥的却基本会笔试这些,所以就对存储过程.函数和包的语法做下总结,也做个备忘!这里面语法大家理解就可以 ...
- oracle 创建,删除存储过程,参数传递,创建,删除存储函数,存储过程和函数的查看,包,系统包
认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块.但存储过程和函数不同于已经介绍过的PL/SQL程序,我们通常把PL/SQL程序称为无名块,而存储过程和函数是以命 ...
- oracle中split的使用方法,Oracle 自定义split 函数实例详解
Oracle 自定义split 函数 Oracle没有提供split函数,但可以自己建立一个函数实现此功能.比如"abc defg hijkl nmopqr stuvw xy ...
- oracle创建索引index,【学习笔记】Oracle索引 创建含sysdate的函数index案例
天萃荷净 分享一篇运维DBA需求,创建含sysdate的函数index案例 1.模拟Oracle数据库环境 创建表插入数据库 [oracle@node1 ~]$ sqlplus chf/oraclep ...
- oracle构建函数,Oracle创建函数
Oracle创建函数 Oracle创建函数是通过PL/SQL自定义编写的,通过关键字function按照自己的需求把复杂的业务逻辑封装进PL/SQL函数中,函数提供一个返回值,返回给使用者.这样使用者 ...
最新文章
- 利用CMake编译内核模块
- 获取上传图片路径方法(新旧方法)
- 论文浅尝 | 知识库问答中关系检测的学习表示映射
- Android之canvas详解
- 初识Spring Security
- DSB2017第一名代码尝试运行(记录自用)(五)
- oracle11g导入导出
- 解决windows 您没有权限访问\\192.168.1.X(局域网) 请与网络管理员联系请求访问权限
- 系统集成项目管理工程师考试题型
- 如何修改hosts文件权限
- 代理服务器-贪心算法
- Spring Cloud微服务技术栈学习(导读)
- 计算机二级考试word论文,office二级考试之word
- HTML项目立项,作为承建方,其项目立项的第一步工作是()。A.编制立项申请书B.项目论证C.项目 - 信管网...
- 使用Arduino IED配合Blinker为ESP8266-01s烧写程序
- 使用大白菜装win10系统的常见问题解决方案
- 简单的卷积神经网络,实现手写英文字母识别
- chromium - DISALLOW_IMPLICIT_CONSTRUCTORS
- gitee教程(超全,超详细,超长)
- Testin云测荣获5G应用企业服务优秀平台奖
热门文章
- C语言从已排序的链表中删除重复项(附完整源码)
- C语言数组元素总和最大的连续子序列的算法(附完整源码)
- C语言实现词典编排算法(附完整源码)
- 经典C语言程序100例之五零
- java只有值传递_面试官:为什么 Java 中只有值传递?
- HDP安全之集成kerberos/LDAP、ranger;安装部署kerberos;安装Knox;安装LDAP;启动LDAP;验证Knox网关
- ANT不完全总结,包含各种命令,ant例子等,转自:http://lavasoft.blog.51cto.com/62575/87306
- Oracle创建和管理表
- arcgis伪节点检查_arcgis建立拓扑分析(检验矢量图)
- fastjson list转json字符串_程序员:JSON、JSONObject 与 JSONArray 简单讲解