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数据库字符串分割的处理实现相关推荐

  1. Mysql Oracle Sql server 三种数据库默认端口

    ** Mysql Oracle Sql server 三种数据库默认端口 ** SQL Server默认端口号为:1433 URL:"jdbc:microsoft:SQL Server:// ...

  2. Oracle+sql+取年度,oracle SQL语句取本周本月本年的数据

    --国内从周一到周日 国外是周日到周六 select to_char(sysdate-1,'D') from dual;--取国内的星期几 去掉减一取国外的星期 --取本周时间内的数据 select ...

  3. sql字符串截取oracle,SQL Sever和Oracle截取字符串分析

    不同的数据库下截取字符串的方法函数是不同的,在sql server下用的是substring(expression, start, length),Oracle下用的是substr(expressio ...

  4. mysql oracle sql区别吗_mysql数据库的SQL语句和oracle的有什么区别?详细点

    匿名用户 1级 2017-08-20 回答 区别如下: 1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Or ...

  5. oracle的 客户端工具,Oracle SQL Handler下载-Oracle数据库客户端工具5.2 官方版-东坡下载...

    Oracle数据库客户端工具是一款非常好用的Oracle数据库客户端工具.有了它,用户可以轻松导出各种数据,操作简单,使用方便,占用资源少.有这方面需要的朋友可以来下载试试! Oracle数据库客户端 ...

  6. oracle sql语句序列,Oracle SQL之 序列使用限制

    Restrictions on Sequence Values You cannot use CURRVAL and NEXTVAL in the following constructs: ■ A ...

  7. oracle sql下划线,oracle通配符?oracle like 下划线?oracle escape用法?通配符like的使用教程...

    你是否正在寻找关于oracle通配符的内容?让我把最内涵的东西奉献给你: oracle sql语言模糊查询--通配符like的使用教程 oracle在Where子句中,可以对datetime.char ...

  8. oracle sql 历史 监控,ORACLE 管理,SQL 篇--监控

    监控事例的等待 selectevent,sum    (decode(wait_Time,0,0,1))"Prev", sum(decode(wait_Time,0,1,0)) & ...

  9. oracle sql去差集,Oracle 两个逗号分割的字符串,获取交集、差集的sql实现过程解析...

    Oracle数据库的两个字段值为逗号分割的字符串,例如:字段A值为"1,2,3,5",字段B为"2". 想获取两个字段的交集(相同值)2,获取两个字段的差集(差 ...

最新文章

  1. Apache Rewrite的主要功能
  2. 字符编码笔记:ASCII,Unicode和UTF-8(转载)
  3. java二维整型数组 各行和排序_java:已知我有一个二维数组,直接输入全部数据,怎么对数组的每行进行升序排序...
  4. PHP中header用法详解带范例(转)
  5. 游戏编程入门之绘制动画的精灵(爆炸特效)
  6. Sort HDU5884(二分+多叉哈夫曼树)
  7. 名图1.8智能隐藏功能_7年后再度回归 全新一代名图“大”不同_搜狐汽车
  8. java datetime 转换_如何实现Java日期时间格式转换
  9. linux tar 命令 详解
  10. sklear中IsolationForest的使用场景
  11. 高阶函数 / abs方法
  12. Qt中Ui名字空间以及setupUi函数的原理和实现 转
  13. Go 语言高性能编程
  14. excel生成动态进度条
  15. SDUST 第四次实验
  16. Vue组件编写之Alert提示框组件编写
  17. 英语语言水平C级,国际通用的学生英语能力水平评测标准
  18. 习惯七 不断更新---平衡的自我提升原则
  19. 安装向日葵后亮度无法调节
  20. c语言的文法,c语言实现First文法

热门文章

  1. 学一部英语电影,相当于在外国生活一个月
  2. UOS如何进入livecd模式
  3. 服务器支持高频分辨率吗,国标GB28181流媒体服务器分辨率会导致视频无法播放吗?...
  4. 后量子 KEM 方案:LAC
  5. 【社招】快手_数据仓库_面试题整理
  6. 【浙大版《Python 程序设计》题目集(解)】第6章-7 找出总分最高的学生(15分)
  7. 高德地图获取行政区一直报no_data
  8. 在写文档封面时,word中下划线变粗
  9. COM 80040154报错
  10. 计算机网络--网络层[微课堂]