oracle 函数 regexp_substr()

简介: oracle函数regexp_substr,测试使用

1、参数说明

REGEXP_SUBSTR(str,pattern,position,occurrence,modifier)
  • str : 需要进行正则处理的字符
  • pattern : 正则表达式
  • position : 翻译表示位置 ,这里表示起始位置,表示从字符串的第几个字符开始匹配,一般都是起始位置1 开始
  • occurrence : 获取第几个分割出来的组。(分割后的字符串类似于一个数组,需要获取第几个数组传入)用来获取分割后的返回
  • modifier : 翻译表示修饰符 这里表示模式
    • i : 为i 时表示不区分大小写分割
    • c : 为c 时表示区分大小写分割 默认为 c 的模式

2、测试使用

select REGEXP_SUBSTR('1,,&,5,2,3', '[^,]', 1,2) from dual;
返回信息
&

表示 : 正则表达式由, 开始截取 从字符串第一位开始,获取截取后的数组第二个值

该函数的使用主要集中于如何写正则表达式

2、动态的增长 occurrence 值

如何获取截取出来的所有数值?通过使用 CONNECT BY LEVEL 两个配合在一起使用。获取所有的数组值。

LEVEL : 伪列,用来记录,可以当作一个用来自增的 虚拟列

select level from dual CONNECT by level <= 5

那么如果想要展示截取出来所有结果就需要和他配合使用。

SELECT REGEXP_SUBSTR('11a22A33a','[^A]+',1,level,'i') AS STR
FROM DUAL
connect by level<=5;

结果是截取出来展示 11,22,33 但是因为level小于等于5所以展示了5行有两行数据是空的。

动态的获取level值

  • 第一种是获取需要截取出来的数组有多少,使用函数regexp_count

    SELECT REGEXP_SUBSTR('11a22A33a','[^A]+',1,level,'i') AS STR
    FROM DUAL
    connect by level<=regexp_count('11a22A33a','[^A]+');
    
  • 第二种是按照截取的信息再次截取并且增加判断

    SELECT REGEXP_SUBSTR('11a22A33a','[^A]+',1,level,'i') AS STR
    FROM DUAL
    connect by REGEXP_SUBSTR('11a22A33a','[^A]+',1,level,'i') is not null
    
  • 第三种是按照该截取的长度判断,使用regexp_replace将要截取的字符替换为空,然后使用旧字符长度减去新字符长度获取需要截取多少次

    SELECT REGEXP_SUBSTR('11a22A33a','[^A]+',1,level,'i') AS STR
    FROM DUAL
    connect by level<= (length('11a22A33a') - length(REGEXP_REPLACE(upper('11a22A33a'),'A','')));
    
目录
相关文章
|
9月前
|
SQL 存储 Oracle
【YashanDB知识库】Oracle pipelined函数在YashanDB中的改写
【YashanDB知识库】Oracle pipelined函数在YashanDB中的改写
|
SQL Oracle 算法
|
存储 Java 数据库
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(二)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
194 0
|
SQL Oracle 关系型数据库
|
SQL Oracle 关系型数据库
Oracle|内置函数之INSTR
【7月更文挑战第5天】
|
Oracle 关系型数据库 数据挖掘
|
Oracle 关系型数据库 数据挖掘
|
NoSQL Oracle 关系型数据库
MongoDB与Oracle:管道函数兼容之道
【4月更文挑战第20天】
208 2
|
Oracle 关系型数据库 数据管理
Oracle常用系统函数之日期和时间类函数:时空穿梭者的魔法棒
【4月更文挑战第19天】Oracle数据库中的日期和时间函数是强大的工具,如同时空穿梭者的魔法棒。`SYSDATE`和`CURRENT_TIMESTAMP`能显示当前时间,助你在数据中记录关键时刻;`ADD_MONTHS`函数让你轻易跃过月份,实现时间穿越;而`TO_DATE`和`TO_CHAR`则负责日期和时间的格式转换,如同时间的化妆师。除此之外,还有`EXTRACT`、`LAST_DAY`等更多魔法道具,帮助数据管理专家们自如操控时间,解决各种挑战。掌握这些函数,你也能在数据世界中自由穿梭!
|
Oracle 算法 关系型数据库
Oracle常用系统函数之数字类函数:数字的魔术师
【4月更文挑战第19天】Oracle数据库中的数字类函数是数字处理的魔术师,包括`ROUND`(四舍五入),`CEIL`和`FLOOR`(向上/下取整),以及`ABS`(计算绝对值)。还有`MOD`、`TRUNC`和`POWER`等函数,提供求余数、截断和计算幂的功能。熟练运用这些函数能提升数据管理效率,让处理数字变得更简单、有趣。

推荐镜像

更多