Oracle中正则表达式的使用实例教程

所属分类: 数据库 / oracle 阅读数: 777
收藏 0 赞 0 分享

前言

正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境。

本文主要介绍了关于Oracle中正则表达式的使用方法,下面话不多说了,来一起看看详细的介绍。

Oracle使用正则表达式离不开这4个函数:regexp_like、regexp_substr、regexp_instr、regexp_replace。

regexp_like

该函数只能用于条件表达式,和 like 类似,但是使用的正则表达式进行匹配

//查询所有包含小写字母或者数字的记录。
 select * from fzq where regexp_like(value,'^([a-z]+|[0-9]+)$');

regexp_substr

该函数和 substr 类似,用于拾取合符正则表达式描述的字符子串,该函数的定义如下

function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
 - String 输入的字符串
 - pattern 正则表达式
 - position 标识从第几个字符开始正则表达式匹配。(默认为1)
 - occurrence 标识第几个匹配组。(默认为1)
 - modifier 取值范围:
 i:大小写不敏感;
 c:大小写敏感;
 n:点号 . 不匹配换行符号;
 m:多行模式;
 x:扩展模式,忽略正则表达式中的空白字符。

下面是一些实例

--检索中间的数字
SELECT REGEXP_SUBSTR(a,'[0-9]+') FROM test_reg_substr WHERE REGEXP_LIKE(a, '[0-9]+');
--检索中间的数字(从第一个字母开始匹配,找第2个匹配项目)
SELECT NVL(REGEXP_SUBSTR(a,'[0-9]+',1, 2), '-') AS a FROM test_reg_substr 
WHERE REGEXP_LIKE(a, '[0-9]+');

regexp_instr

该函数和 instr 类似,用于标定符合正则表达式的字符子串的开始位置,Oracle数据库中的REGEXP_INSTR函数的语法是

REGEXP_INSTR (source_char, pattern [, position [, occurrence 
 [, return_option [, match_parameter ] ] ] ] )
 - source_char 搜索值的字符表达式
 - pattern 正则表达式
 - position 可选。搜索在字符串中的开始位置。如果省略,则默认为1,这是字符串中的第一个位置。
 - occurrence 可选。它是模式字符串中的第n个匹配位置。如果省略,默认为1。 
 - return_option 可选 指定Oracle返回的位置,
  0那么Oracle将返回出现的第一个字符的位置。这是默认的,
  1则Oracle返回字符之后发生的位置。
 - match_parameter 取值范围:
  i:大小写不敏感;
  c:大小写敏感;
  n:点号 . 不匹配换行符号;
  m:多行模式;
  x:扩展模式,忽略正则表达式中的空白字符。

下面是一些实例

--找到字符串中的第一个”e”字的位置
--返回2
SELECT REGEXP_INSTR ('hello itmyhome', 'e') FROM dual; 
--“1”为开始位置 “2”是搜索第二个匹配的,”0”是return_option 
--返回出现的第一个字符位置“c”是区分大小写 ,所以将返回13
SELECT REGEXP_INSTR ('my is itMyhome', 'm', 1, 2, 0, 'c') FROM dual;
--
SELECT REGEXP_INSTR ('World filled with love', 'with', 1, 1, 0, 'i') FROM dual;
--匹配多个备选
SELECT REGEXP_INSTR ('Itmyhome', 'a|i|o|e|u') FROM dual;

regexp_replace

该函数和 replace 类似,用于替换符合正则表达式的字符串,Oracle数据库中的REGEXP_REPLACE函数的语法是

REGEXP_REPLACE(source_char, pattern [, replace_string 
 [, position [, occurrence [, match_parameter ] ] ] ])
 - source_char 搜索值的字符表达式
 - pattern 正则表达式
 - replace_string 可选。匹配的模式将被替换replace_string字符串。
 如果省略replace_string参数,将删除所有匹配的模式,并返回结果字符串。
 - position 可选。在字符串中的开始位置搜索。如果省略,则默认为1。
 - occurrence 它是模式字符串中的第n个匹配位置。如果省略,默认为1。
 - match_parameter
 i:大小写不敏感;
 c:大小写敏感;
 n:点号 . 不匹配换行符号;
 m:多行模式;
 x:扩展模式,忽略正则表达式中的空白字符。

如下是一些实例

--字符串替换
--luck is my network id
SELECT REGEXP_REPLACE ('itmyhome is my network id', '^(\S*)', 'luck') FROM dual;
--此示例将所指定的\d数字将以#字符替换
--Result: '#, #, and ## are numbers in this example'
SELECT REGEXP_REPLACE ('2, 5, and 10 are numbers in this example', '\d', '#') FROM dual;

以上就是这篇文章的全部内容了,本文还有许多不足,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

更多精彩内容其他人还在看

Oracle下的Java分页功能_动力节点Java学院整理

分页的时候返回的不仅包括查询的结果集(List),而且还包括总的页数(pageNum)、当前第几页(pageNo)等等信息,所以我们封装一个查询结果PageModel类,具体实现代码,大家参考下本文
收藏 0 赞 0 分享

Win7 64位下PowerDesigner连接64位Oracle11g数据库

这篇文章主要为大家详细介绍了Win7 64位下PowerDesigner连接64位Oracle11g数据库,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

PowerDesigner15.1连接oracle11g逆向生成ER图

这篇文章主要为大家详细介绍了PowerDesigner15.1连接oracle11g逆向生成ER图的相关方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

解决Oracle批量修改问题

这篇文章主要介绍了解决Oracle批量修改问题,需要的朋友可以参考下
收藏 0 赞 0 分享

Oracle的out参数实例详解

这篇文章主要介绍了Oracle的out参数实例详解的相关资料,这里提供实例帮助大家理解这部分内容,需要的朋友可以参考下
收藏 0 赞 0 分享

详解Oracle在out参数中访问光标

这篇文章主要介绍了详解Oracle在out参数中访问光标的相关资料,这里提供实例代码帮助大家学习理解这部分内容,希望能帮助到大家,需要的朋友可以参考下
收藏 0 赞 0 分享

详解Oracle调试存储过程

这篇文章主要介绍了详解Oracle调试存储过程的相关资料,这里提供实例帮助大家学习理解这部分内容,需要的朋友可以参考下
收藏 0 赞 0 分享

Oracle的CLOB大数据字段类型操作方法

VARCHAR2既分PL/SQL Data Types中的变量类型,也分Oracle Database中的字段类型,不同场景的最大长度不同。接下来通过本文给大家分享Oracle的CLOB大数据字段类型操作方法,感兴趣的朋友一起看看吧
收藏 0 赞 0 分享

oracle中左填充(lpad)和右填充(rpad)的介绍与用法

这篇文章主要跟大家介绍了关于oracle中左填充(lpad)和右填充(rpad)的相关资料,通过填充我们可以固定字段的长度,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
收藏 0 赞 0 分享

Oracle回滚段使用查询代码详解

这篇文章主要介绍了Oracle回滚段使用查询代码详解的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多