oracle 函数 regexp_substr()

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测监控 Prometheus 版,每月50GB免费额度
简介: 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','')));
    
目录
相关文章
|
15天前
|
SQL Oracle 关系型数据库
[Oracle]面试官:你举例几个内置函数,并且说说如何使用内置函数作正则匹配
本文介绍了多种SQL内置函数,包括单行函数、非空判断函数、日期函数和正则表达式相关函数。每种函数都有详细的参数说明和使用示例,帮助读者更好地理解和应用这些函数。文章强调了字符串操作、数值处理、日期计算和正则表达式的使用方法,并提供了丰富的示例代码。作者建议读者通过自测来巩固学习成果。
13 1
[Oracle]面试官:你举例几个内置函数,并且说说如何使用内置函数作正则匹配
|
4月前
|
SQL Oracle 算法
|
4月前
|
SQL Oracle 关系型数据库
|
4月前
|
SQL Oracle 关系型数据库
Oracle|内置函数之INSTR
【7月更文挑战第5天】
|
4月前
|
Oracle 关系型数据库 数据挖掘
|
4月前
|
Oracle 关系型数据库 数据挖掘
|
6月前
|
存储 Java 数据库
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(二)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
76 0
|
5月前
|
存储 Oracle NoSQL
Oracle中decode函数详解
Oracle中decode函数详解
|
5月前
|
Oracle 关系型数据库 大数据
oracle递归函数
oracle递归函数
|
6月前
|
NoSQL Oracle 关系型数据库
MongoDB与Oracle:管道函数兼容之道
【4月更文挑战第20天】
66 2

推荐镜像

更多