oracle sql 拆分字符串,Oracle数据库字符串分割的处理实现
Oracle数据库字符串分割的处理实现。
1.首先要先创建数组
create or replace type t_ret_table is table of varchar2(20);
2.利用自定义函数实现一,利用函数返回数组.
create or replace function f_split_string(var_str in string,var_split In String) return t_ret_table
is
var_out t_ret_table;
var_tmp varchar2(4000);
var_element varchar2(4000);
begin
var_tmp := var_str;
var_out := t_ret_table();
–如果存在匹配的分割符
while instr(var_tmp,var_split)>0 loop
var_element := substr(var_tmp,1,instr(var_tmp,var_split)-1);
var_tmp := substr(var_tmp,instr(var_tmp,var_split)+length(var_split),length(var_tmp));
var_out.extend(1);
var_out(var_out.count) := var_element;
end loop;
var_out.extend(1);
var_out(var_out.count) := var_tmp;
return var_out;
end f_split_string;
3.利用 pipelined Function 函数实现.
create or replace function f_split(var_str in string,var_split In String) return t_ret_table PIPELINED
as
var_tmp varchar2(4000);
var_element varchar2(4000);
n_length Number := length(var_split);
begin
var_tmp := var_str;
while instr(var_tmp,var_split)>0 loop
var_element := substr(var_tmp,1,instr(var_tmp,var_split)-1);
var_tmp := substr(var_tmp,instr(var_tmp,var_split)+n_length,length(var_tmp));
pipe row(var_element);
end loop;
pipe row(var_tmp);
return;
end f_split;
4.字符串分割的函数,返回数组,但是也可以使用语句查询
select * from table(f_split_string(‘hanjs-zhaos’,'-’));
5.对于需要排序的,完全可以在查询时体现.
注意:查询出来的列名为 Column_Value
6.怎样支掉字符串中逗号间重复的字符
如 ‘,1,2,5,9,1,2,5,9,1,2,9,1,2,9,1,2,3,9,1,2,3,9,1,2,9,1,2,9,1,2,3,9,1,2,3,9,’怎样支掉字符串中逗号间重复的字符,并将字符升序排列,得到
‘,1,2,3,5,9,’
百思不得其解,是高手的试一下。
解答:
select col from(
select sys_connect_by_path(col,’,')||’,’ col,level from(
select col,row_number() over(order by rownum) rn from (
select distinct substr(col,instr(col,’,',1,rownum)+1,instr(col,’,',1,rownum+1)-instr(col,’,',1,rownum)-1) col from (
select ‘,1,2,5,9,1,2,5,9,1,3,9,’ col from dual
) connect by rownum
)
)
connect by prior rn = rn -1 order by level desc
) where rownum=1
oracle sql 拆分字符串,Oracle数据库字符串分割的处理实现相关推荐
- Mysql Oracle Sql server 三种数据库默认端口
** Mysql Oracle Sql server 三种数据库默认端口 ** SQL Server默认端口号为:1433 URL:"jdbc:microsoft:SQL Server:// ...
- Oracle+sql+取年度,oracle SQL语句取本周本月本年的数据
--国内从周一到周日 国外是周日到周六 select to_char(sysdate-1,'D') from dual;--取国内的星期几 去掉减一取国外的星期 --取本周时间内的数据 select ...
- sql字符串截取oracle,SQL Sever和Oracle截取字符串分析
不同的数据库下截取字符串的方法函数是不同的,在sql server下用的是substring(expression, start, length),Oracle下用的是substr(expressio ...
- mysql oracle sql区别吗_mysql数据库的SQL语句和oracle的有什么区别?详细点
匿名用户 1级 2017-08-20 回答 区别如下: 1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Or ...
- oracle的 客户端工具,Oracle SQL Handler下载-Oracle数据库客户端工具5.2 官方版-东坡下载...
Oracle数据库客户端工具是一款非常好用的Oracle数据库客户端工具.有了它,用户可以轻松导出各种数据,操作简单,使用方便,占用资源少.有这方面需要的朋友可以来下载试试! Oracle数据库客户端 ...
- oracle sql语句序列,Oracle SQL之 序列使用限制
Restrictions on Sequence Values You cannot use CURRVAL and NEXTVAL in the following constructs: ■ A ...
- oracle sql下划线,oracle通配符?oracle like 下划线?oracle escape用法?通配符like的使用教程...
你是否正在寻找关于oracle通配符的内容?让我把最内涵的东西奉献给你: oracle sql语言模糊查询--通配符like的使用教程 oracle在Where子句中,可以对datetime.char ...
- oracle sql 历史 监控,ORACLE 管理,SQL 篇--监控
监控事例的等待 selectevent,sum (decode(wait_Time,0,0,1))"Prev", sum(decode(wait_Time,0,1,0)) & ...
- oracle sql去差集,Oracle 两个逗号分割的字符串,获取交集、差集的sql实现过程解析...
Oracle数据库的两个字段值为逗号分割的字符串,例如:字段A值为"1,2,3,5",字段B为"2". 想获取两个字段的交集(相同值)2,获取两个字段的差集(差 ...
最新文章
- Apache Rewrite的主要功能
- 字符编码笔记:ASCII,Unicode和UTF-8(转载)
- java二维整型数组 各行和排序_java:已知我有一个二维数组,直接输入全部数据,怎么对数组的每行进行升序排序...
- PHP中header用法详解带范例(转)
- 游戏编程入门之绘制动画的精灵(爆炸特效)
- Sort HDU5884(二分+多叉哈夫曼树)
- 名图1.8智能隐藏功能_7年后再度回归 全新一代名图“大”不同_搜狐汽车
- java datetime 转换_如何实现Java日期时间格式转换
- linux tar 命令 详解
- sklear中IsolationForest的使用场景
- 高阶函数 / abs方法
- Qt中Ui名字空间以及setupUi函数的原理和实现 转
- Go 语言高性能编程
- excel生成动态进度条
- SDUST 第四次实验
- Vue组件编写之Alert提示框组件编写
- 英语语言水平C级,国际通用的学生英语能力水平评测标准
- 习惯七 不断更新---平衡的自我提升原则
- 安装向日葵后亮度无法调节
- c语言的文法,c语言实现First文法