oracle 函数 regexp_substr()

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
EMR Serverless StarRocks,5000CU*H 48000GB*H
云原生网关 MSE Higress,422元/月
简介: 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','')));
    
目录
相关文章
|
2月前
|
SQL Oracle 关系型数据库
Oracle之日期计算相关函数
Oracle之日期计算相关函数
63 0
|
10天前
|
SQL Oracle 算法
|
7天前
|
SQL Oracle 关系型数据库
|
12天前
|
SQL Oracle 关系型数据库
Oracle|内置函数之INSTR
【7月更文挑战第5天】
|
11天前
|
Oracle 关系型数据库 数据挖掘
|
9天前
|
Oracle 关系型数据库 数据挖掘
|
2月前
|
SQL Oracle 关系型数据库
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
89 0
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
|
1月前
|
存储 Oracle NoSQL
Oracle中decode函数详解
Oracle中decode函数详解
|
2月前
|
存储 Java 数据库
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(二)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
58 0
|
2月前
|
NoSQL Oracle 关系型数据库
MongoDB与Oracle:管道函数兼容之道
【4月更文挑战第20天】
23 2

推荐镜像

更多