zoukankan      html  css  js  c++  java
  • 将有逗号的字符串拆解

    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

  • 相关阅读:
    Online ddl 工具之pt-online-schema-change
    【MySql】mysql 慢日志查询工具之mysqldumpslow
    赶集网mysql开发36条军规
    MySQL数据库高并发优化配置
    mysql的表分区
    mysql 如果处理货币金钱类型
    bootstrab table+表格 select可编辑完整实例
    mongoDb 给表添加+ 删除字段
    mongoDb +Java+springboot
    java+数据库+D3.js 实时查询人物关系图
  • 原文地址:https://www.cnblogs.com/yhoralce/p/9684077.html
Copyright © 2011-2022 走看看