zoukankan      html  css  js  c++  java
  • oracle REGEXP_SUBSTR函数

    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;  

    结果:  17  

    2、查询使用正则分割后的最后一个值,也就是23

    [sql]

    SELECT REGEXP_SUBSTR('17,20,23','[^,]+',1,3,'i') AS STR FROM DUAL;  

    结果:  23

    3、获取一个多个数值的列,从而能够让结果以多行的形式展示出来

    [sql] 

    SELECT LEVEL FROM DUAL CONNECT BY LEVEL <=7;  

    结果:  

    --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;  

    结果:

    -- 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;  

    结果:

    -- 17

    --20

    --23

  • 相关阅读:
    【leetcode】Recover Binary Search Tree
    【leetcode】Dungeon Game
    【leetcode】Text Justification
    【leetcode】Largest Number
    【leetcode】Merge k Sorted Lists
    【leetcode】Reverse Nodes in k-Group
    【leetcode】Multiply Strings
    【leetcode】Unique Binary Search Trees II
    hdu 1885 bfs+状压
    hdu 1429 bfs+状态压缩
  • 原文地址:https://www.cnblogs.com/yuany69/p/6093017.html
Copyright © 2011-2022 走看看