在Oracle中使用正则表达式

 更新时间:2022年05月05日 15:54:05   作者:springsnow  
这篇文章介绍了在Oracle中使用正则表达式的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

从10g开始,可以在查询中使用

一、正则表达式:

1、REGEXP_LIKE :匹配

REGEXP_LIKE(source_string, pattern[, match_parameter]):返回满足匹配模式的字符串

相当于增强的like函数。

  • Source_string指定源字符表达式;
  • pattern指定规则表达式;
  • match_parameter指定默认匹配操作的文本串。

其中 match_parameter参数都是可选的。

match_parameter的取值如下:

  • 'c' 说明在进行匹配时区分大小写(缺省值);
  • 'i' 说明在进行匹配时不区分大小写;
  • 'n' 允许使用可以匹配任意字符的操作符;
  • 'm' 将x作为一个包含多行的字符串。
  • ‘x’ 忽略空白字符。
SELECT * FORM. tKHXX where REGEXP_LIKE(SJHM, '^[1]{1}[35]{1}[[:digit:]]{9}$'

2、REGEXP_REPLACE :替换

REGEXP_REPLACE(source_string,pattern,replace_string,position,occurtence,match_parameter):字符串替换函数
相当于增强的replace函数。

  • Source_string指定源字符表达式;
  • pattern指定规则表达式;
  • replace_string指定用于替换的字符串;
  • position指定起始搜索位置;
  • occurtence指定替换出现的第n个字符串;
  • match_parameter指定默认匹配操作的文本串
select length(regexp_replace('123-345-566', '[^-]', '')) from dual;

3、REGEXP_INSTR :位置

REGEXP_INSTR(source_string, pattern[, start_position[, occurrence[, return_option[, match_parameter]]]])该函数查找 pattern ,并返回该模式的第一个位置。
您可以随意指定您想要开始搜索的 start_position。

  • occurrence 参数默认为 1,除非您指定您要查找接下来出现的一个模式。
  • return_option 的默认值为 0,它返回该模式的起始位置;值为 1 则返回符合匹配条件的下一个字符的起始位置。
SELECT REGEXP_INSTR ('hello itmyhome', 'e') FROM dual

4、REGEXP_SUBSTR :提取

REGEXP_SUBSTR(source_string, pattern[,position [, occurrence[, match_parameter]]]):返回匹配模式的子字符串。

相当于增强的substr函数。

  • Source_string指定源字符表达式;
  • pattern指定规则表达式;
  • position指定起始搜索位置;
  • occurtence指定替换出现的第n个字符串;
  • match_parameter指定默认匹配操作的文本串。

其中position,occurtence,match_parameter参数都是可选的。

SELECT REGEXP_SUBSTR ('hello my phone is 520 ', '[0-9]+') FROM dual; --520

5、REGEXP_COUNT (Oracle 11g 新增) :计数

REGEXP_COUNT (source_char, pattern [, position [, match_parameter]])统计字符串出现的次数

select REGEXP_COUNT('123-345-566', '-') from dual;

二、预定义的 POSIX 字符簇

[:alpha:]:字母字符

[:lower:]:小写字母字符

[:upper:]:大写字母字符

[:digit:]:数字

[:alnum:]:字母数字字符

[:space:]:空白字符(禁止打印),如回车符、换行符、竖直制表符和换页符

[:punct:]:标点字符

[:cntrl:]:控制字符(禁止打印)

[:print:]:可打印字符

到此这篇关于在Oracle中使用正则表达式的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • oracle实现按天,周,月,季度,年查询排序方法

    oracle实现按天,周,月,季度,年查询排序方法

    这篇文章主要介绍了oracle按天,周,月,季度,年查询排序功能,本文给出了sql语句,每种方法给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • Oracle 11g实现安全加固的完整步骤

    Oracle 11g实现安全加固的完整步骤

    这篇文章主要给大家介绍了关于Oracle 11g实现安全加固的完整步骤,文中通过示例代码将实现的步骤一步步介绍的非常详细,对大家学习或者使用Oracle 11g具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2018-05-05
  • Oracle如何直接运行OS命令(下)

    Oracle如何直接运行OS命令(下)

    Oracle如何直接运行OS命令(下)...
    2007-03-03
  • Oracle递归查询简单示例

    Oracle递归查询简单示例

    最近在做一个树状编码管理系统,其中用到了oracle的树状递归查询,下面这篇文章主要给大家介绍了关于Oracle递归查询的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • oracle查询锁表及解锁,修改表字段名与复制表结构和数据的方法

    oracle查询锁表及解锁,修改表字段名与复制表结构和数据的方法

    今天小编就为大家分享一篇关于oracle查询锁表及解锁,修改表字段名与复制表结构和数据的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • Oracle 实现类似SQL Server中自增字段的一个办法

    Oracle 实现类似SQL Server中自增字段的一个办法

    由于Oracle中没有类似SQL Server中的自增字段,所以我们如果想要通过设定类似ID性质的唯一列的话,需要借助Oracle的sequence,先建立一个序列,然后在每次插入数据的时候,通过前触发器来更新ID值,并将序列的序号加1,这样的迂回方式来实现。
    2009-07-07
  • 解决Oracle DISTINCT 报错 inconsistent datatypes: expected - got CLOB(数据类型不一致: 应为 -, 但却获得 CLOB)的问题

    解决Oracle DISTINCT 报错 inconsistent datatypes: expected 

    这篇文章主要介绍了Oracle DISTINCT报错inconsistent datatypes:expected-got CLOB(数据类型不一致: 应为-,但却获得 CLOB),本文给大家分享三种解决方案,需要的朋友可以参考下
    2023-07-07
  • oracle不支持的字符集orai18n.jar ZHS16GBK异常问题解决办法

    oracle不支持的字符集orai18n.jar ZHS16GBK异常问题解决办法

    字符集是数据库中用来表示和存储字符的编码系统,这篇文章主要给大家介绍了关于oracle不支持的字符集orai18n.jar ZHS16GBK异常问题的解决办法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • 在Oracle数据库表中加载多个数据文件的方法详解

    在Oracle数据库表中加载多个数据文件的方法详解

    这篇文章主要给大家介绍了在Oracle数据库表中加载多个数据文件的方法,本文中,我将展示 SQL 加载器 + Unix 脚本实用程序的强大功能,其中 SQL 加载器可以使用自动 shell 脚本加载多个数据文件,需要的朋友可以参考下
    2024-01-01
  • Oracle提高SQL执行效率的3种方法

    Oracle提高SQL执行效率的3种方法

    Oracle提供了多种方法在执行带有大量执行计划的复杂查询时剖析过程会拖累系统的性能,感兴趣的朋友可以了解下
    2013-09-09

最新评论