zoukankan      html  css  js  c++  java
  • SQL REGEXP_SUBSTR函数,可以在sql中根据分割字符进行截取

     
     
    转自: http://www.2cto.com/database/201209/154045.html
     
    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
     
     
  • 相关阅读:
    Maximum Flow Exhaustion of Paths Algorithm
    ubuntu下安装java环境
    visualbox使用(二)
    vxworks一个超级奇怪的错误(parse error before `char')
    February 4th, 2018 Week 6th Sunday
    February 3rd, 2018 Week 5th Saturday
    February 2nd, 2018 Week 5th Friday
    February 1st, 2018 Week 5th Thursday
    January 31st, 2018 Week 05th Wednesday
    January 30th, 2018 Week 05th Tuesday
  • 原文地址:https://www.cnblogs.com/mr-level/p/4737110.html
Copyright © 2011-2022 走看看