关于REGEXP_SUBSTR函数 是如何使用的

转载地址:http://blog.csdn.net/zz87250976/article/details/22856829


REGEXP_SUBSTR函数格式如下:
function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
__srcstr     :需要进行正则处理的字符串
__pattern    :进行匹配的正则表达式
__position   :起始位置,从第几个字符开始正则表达式匹配(默认为1)
__occurrence :标识第几个匹配组,默认为1
__modifier   :模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)

实际应用如下:在Oracle中,使用一条语句实现将'34,56,-23'拆分成'34','56','-23'的集合。

[plain]  view plain  copy
  1. --1、查询使用正则分割后的第一个值,也就是34  
  2. SELECT REGEXP_SUBSTR('34,56,-23','[^,]+',1,1,'i') AS STR FROM DUAL;  
  3. --结果是:34   
  4. --2、查询使用正则分割后的最后一个值,也就是-23  
  5. SELECT REGEXP_SUBSTR('34,56,-23','[^,]+',1,3,'i') AS STR FROM DUAL;  
  6. --结果是:-23  
  7. --3、获取一个多个数值的列,从而能够让结果以多行的形式展示出来  
  8. SELECT LEVEL FROM DUAL CONNECT BY LEVEL <=7;  
  9. --结果是:  
  10. --1  
  11. --2  
  12. --3  
  13. --4  
  14. --5  
  15. --6  
  16. --7  
  17. --4、将上面REGEXP_SUBSTR的occurrence关联  
  18. SELECT NVL(REGEXP_SUBSTR('34,56,-23', '[^,]+', 1, LEVEL, 'i'), 'NULLL') AS STR FROM DUAL CONNECT BY LEVEL <= 7;  
  19. --结果是:  
  20. --34  
  21. --56  
  22. ---23  
  23. --null  
  24. --null  
  25. --mull  
  26. --null  
  27. --5、优化上面的SQL语句,让生成的行的数量符合实际情况  
  28. SELECT REGEXP_SUBSTR('34,56,-23', '[^,]+', 1, LEVEL, 'i') AS STR FROM DUAL CONNECT BY LEVEL <= LENGTH('34,56,-23') - LENGTH(REGEXP_REPLACE('34,56,-23', ',', '')) + 1;  
  29. --结果是:  
  30. --34  
  31. --56  
  32. ---23  


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值