Oracle中REGEXP_SUBSTR函数
 
Oracle中REGEXP_SUBSTR函数的使用说明:
 
题目如下:
在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20','23'的集合。
 
REGEXP_SUBSTR函数格式如下:
function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
__srcstr     :需要进行正则处理的字符串
__pattern    :进行匹配的正则表达式
__position   :起始位置,从第几个字符开始正则表达式匹配(默认为1)
__occurrence :标识第几个匹配组,默认为1
__modifier   :模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)
 
1、查询使用正则分割后的第一个值,也就是17
[sql] 
SELECT REGEXP_SUBSTR('17,20,23','[^,]+',1,1,'i') AS STR FROM DUAL;  
结果:  www.2cto.com  
STR
-----
17
 
2、查询使用正则分割后的最后一个值,也就是23
[sql] 
SELECT REGEXP_SUBSTR('17,20,23','[^,]+',1,3,'i') AS STR FROM DUAL;  
结果:
STR
----
23
 
3、获取一个多个数值的列,从而能够让结果以多行的形式展示出来
[sql] 
SELECT LEVEL FROM DUAL CONNECT BY LEVEL <=7;  
结果:  www.2cto.com  
LEVEL
----
1
2
3
4
5
6
7
 
4、将上面REGEXP_SUBSTR的occurrence关联
[sql] 
SELECT NVL(REGEXP_SUBSTR('17,20,23', '[^,]+', 1, LEVEL, 'i'), 'NULLL') AS STR  
  FROM DUAL  
CONNECT BY LEVEL <= 7;  
STR  www.2cto.com  
----
17
20
23
NULL
NULL
NULL
NULL
 
5、优化上面的SQL语句,让生成的行的数量符合实际情况
[sql] 
SELECT REGEXP_SUBSTR('17,20,23', '[^,]+', 1, LEVEL, 'i') AS STR  
  FROM DUAL  
CONNECT BY LEVEL <=  
           LENGTH('17,20,23') - LENGTH(REGEXP_REPLACE('17,20,23', ',', ''))+1;  
STR
----
17
20
23

最新文章

  1. MongoDB 安全和访问权限控制
  2. 轻量级jQuery语法高亮代码高亮插件jQuery Litelighter。
  3. Find All Numbers Disappeared in an Array
  4. [转载]C++堆栈的入门学习
  5. Java-继承,多态0922-05
  6. UITableView 系列之自定义 UITableViewCell
  7. 通过方法名(字符串)执行Objective-C方法
  8. 9款基于CSS3 Transitions实现的鼠标经过图标悬停特效
  9. subsets-ii(需要思考,包括了子数组的求法)
  10. 多路径配置vlome group共享存储,VG的更新。
  11. Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
  12. LSI MegaCl i命令使用1
  13. tinkphp5.0 traits 的引入
  14. 1.1Hibernate持久化类和Hibernate持久化对象状态
  15. 201521123114 《Java程序设计》第4周学习总结
  16. FC105 FC106 Scale功能块使用说明
  17. C#里面滥用String造成的性能问题
  18. IDEA创建Web项目(maven)
  19. 关于ios 11 的问题
  20. 使用influx控制台工具操作InfluxDB

热门文章

  1. symfony中twig的模板变量与注释
  2. sql 语法
  3. Ubuntu中root用户和user用户的相互切换(转)
  4. 在IE6下使用filter设置png背景
  5. LA 4064 Magnetic Train Tracks
  6. 【20160924】GOCVHelper MFC增强算法(1)
  7. 调试器不能连接到STM32的问题与解决办法
  8. MFC设置对话框大小
  9. drawRect导致内存暴增的真正原因
  10. .Net自帶Ajax和GridView