oracle 函数 regexp_substr()

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: 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','')));
    
目录
相关文章
|
3月前
|
SQL Oracle 关系型数据库
Oracle之日期计算相关函数
Oracle之日期计算相关函数
34 0
|
3月前
|
SQL Oracle 关系型数据库
Oracle之regexp系列函数详解
Oracle之regexp系列函数详解
62 1
|
6月前
|
存储 SQL Oracle
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
55 0
|
2月前
|
存储 Java 数据库
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(二)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
27 0
|
2月前
|
SQL Oracle 关系型数据库
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
56 0
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
|
10天前
|
SQL Oracle 关系型数据库
Oracle查询优化-聚集函数
【2月更文挑战第5天】【2月更文挑战第13篇】聚集函数
14 4
|
2月前
|
存储 SQL Java
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(一)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
26 0
|
2月前
|
SQL Oracle 算法
Oracle函数
Oracle函数
94 1
|
3月前
|
SQL Oracle 关系型数据库
Oracle之有哪些日期计算函数?
Oracle之有哪些日期计算函数?
105 0
|
3月前
|
SQL Oracle 关系型数据库
Oracle之常用聚集函数详解
Oracle之常用聚集函数详解
28 1