在Oracle中使用正则表达式

目录
  • 一、正则表达式:
    • 1、REGEXP_LIKE :匹配
    • 2、REGEXP_REPLACE :替换
    • 3、REGEXP_INSTR :位置
    • 4、REGEXP_SUBSTR :提取
    • 5、REGEXP_COUNT (Oracle 11g 新增) :计数
  • 二、预定义的 POSIX 字符簇

从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中使用正则表达式的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Oracle正则表达式使用介绍

    下面通过一些例子来说明使用正则表达式来处理一些工作中常见的问题. 1. REGEXP_SUBSTR REGEXP_SUBSTR 函数使用正则表达式来指定返回串的起点和终点,返回与source_string 字符集中的VARCHAR2 或CLOB 数据相同的字符串. 语法: --1.REGEXP_SUBSTR与SUBSTR函数相同,返回截取的子字符串 REGEXP_SUBSTR(srcstr, pattern [, position [, occurrence [, match_option]]]

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

    前言 正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境. 本文主要介绍了关于Oracle中正则表达式的使用方法,下面话不多说了,来一起看看详细的介绍. Oracle使用正则表达式离不开这4个函数:regexp_like.regexp_substr.regexp_instr.regexp_replace. regexp_like 该函数只能用于条件表达式,和 like 类似,但是使用的正则表达式进行匹配 //查询所

  • Oracle通过正则表达式分割字符串 REGEXP_SUBSTR的代码详解

    REGEXP_SUBSTR函数格式如下: function REGEXP_SUBSTR(string, pattern, position, occurrence, modifier) string :需要进行正则处理的字符串 pattern :进行匹配的正则表达式 position :起始位置,从第几个字符开始正则表达式匹配(默认为1) occurrence :标识第几个匹配组,默认为1 modifier :模式('i'不区分大小写进行检索:'c'区分大小写进行检索.默认为'c') SELEC

  • oracle正则表达式regexp_like的用法详解

    /*ORACLE中的支持正则表达式的函数主要有下面四个:1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBSTR的功能相似4,REGEXP_REPLACE :与REPLACE的功能相似它们在用法上与Oracle SQL 函数LIKE.INSTR.SUBSTR 和REPLACE 用法相同,但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符.POSIX 正则表达式由标准的元字符(m

  • Oracle数据库正则表达式使用场景代码实例

    正则表达式: 无论是在前端还是后台正则表达式都是一个至关重要的知识点,例如判断一个手机号码输入是否正确,如果使用Java.C或者其他语言进行字符串进行判断,也许写几十行代码都不一定能解决,而且漏洞百出,而使用正则表达式,一行代码则可轻易解决,下面是举例说明正则表达式的用法: 1: \d 代表一个(阿拉伯数字) 任意数字 例如:判断用户输入的是否为11位数字(当然手机号码是不能这么简答的表达,只是解释一下\d的用法) select 'ok'  from dual  where regexp_lik

  • Oracle 正则表达式实例详解

    Oracle 正则表达式实例详解 FORM开发中的按行拆分需求:拆分后的行要有规律,并按前后层次排序 需求分析如下: 现有行: 2  ,      2.1  ,     2.2   ,   2.3           3                      2.1.1,    2.1.2  ,    2.1.3 ,    2.2.1  , 2.1.1.1, 2.1.1.2, 对 2 进行拆分得到的 结果应该是 2.4 (2.4 是通过 查看历史记录中以2 开头,有一位小数点,小数点后一位最

  • Oracle 10G:PL/SQL正规表达式(正则表达式)手册

    Oracle 的正规表达式的实施是以各种 SQL 函数和一个 WHERE 子句操作符的形式出现的.如果您不熟悉正规表达式,那么这篇文章可以让您了解一下这种新的极其强大然而表面上有点神秘的功能.已经对正规表达式很熟悉的读者可以了解如何在 Oracle SQL 语言的环境中应用这种功能. 什么是正规表达式? 正规表达式由一个或多个字符型文字和/或元字符组成.在最简单的格式下,正规表达式仅由字符文字组成,如正规表达式 cat.它被读作字母 c,接着是字母 a 和 t,这种模式匹配 cat.locati

  • ORACLE数据库中怎么求除数字、字母之外的非中文字符的正则表达式

    最近做项目,有这样一需求:ORACLE数据库中求除数字.字母之外的非中文字符的正则表达式 如有如下字段,需将其中除字母.数字.汉字外的其他所有字符替换为空 'asdfsad ,,:)()!@123234#$%^&*(我w 是e ? 中国人../\[]::''""一人' 最终得到值:asdfsad123234我是中国人一人 select FN_REG_REPLACEOTHER('asdfsad ,,:)()!@#$%^&*(我是?中国人../\[]::''"&q

  • 在Oracle中使用正则表达式

    目录 一.正则表达式: 1.REGEXP_LIKE :匹配 2.REGEXP_REPLACE :替换 3.REGEXP_INSTR :位置 4.REGEXP_SUBSTR :提取 5.REGEXP_COUNT (Oracle 11g 新增) :计数 二.预定义的 POSIX 字符簇 从10g开始,可以在查询中使用 一.正则表达式: 1.REGEXP_LIKE :匹配 REGEXP_LIKE(source_string, pattern[, match_parameter]):返回满足匹配模式的字

  • oracle中sql 正则写法详解

    目录 在Oracle 10g及以下版本中,可以使用POSIX扩展来进行正则匹配 Oracle 11g及以上版本 是否走索引 Oracle中使用正则表达式需先使用REGEXP_LIKE函数来匹配字符串.正则表达式的语法与一般正则表达式相似,但具体的写法也受不同版本的Oracle环境不同. 在Oracle 10g及以下版本中,可以使用POSIX扩展来进行正则匹配 如: ^:匹配字符串的开始位置:$:匹配字符串的结束位置:.:匹配任何单个字符:[ ]:匹配指定集合内的任何字符,如[abc]匹配a.b.

  • ORACLE中常用的几种正则表达式小结

    ORACLE正则表达式我基本用到的就一下几种,前四种最长用到 REGEXP_LIKE(source_char, pattern, match_parameter) REGEXP_SUBSTR(source_char, pattern, position, occurrence,match_parameter) REGEXP_INSTR(source_char, pattern, position, occurrence,match_parameter) REGEXP_REPLACE REGEXP

  • 比较全面的C 、Java、JavaScript中的正则表达式详解

    什么是正则表达式? 正则表达式(Regular Expression) 就是用某种模式去匹配一类字符串的公式.如你要在一篇文章中查找第一个字是"罗"最后一个字是"浩"的三个字的姓名,即"罗 * 浩":那么"罗 * 浩"就是公式,也称作 模式(Pattern) ,这篇文章就是 要匹配的串( 或叫文本 text) .再如,你要检查输入的一个字符串是否是 126 邮箱的格式,你得制定一个规则去查检,这种规则就是正则表达式. 从入门开

  • ORACLE中关于表的一些特殊查询语句

    1: 如何判断字段的值里面:那些数据包含小写字母或大小字母 判断字段NAME的值里面有小写字母的记录 方式1: SELECT NAME FROM TEST WHERE regexp_like(NAME,'[[:lower:]]'); 方式2 SELECT NAME FROM TEST WHERE regexp_like(NAME,'[a-z]'); 判断字段NAME的值里面有大写字母的记录 方式1: SELECT NAME FROM TEST WHERE regexp_like(NAME,'[[

  • Replace中的正则表达式

    replace:把原有的字符替换成新的字符 1. replace的字符串替换 var str = 'pku2016pku2017'; str = str.replace('pku', 'pkusoft'); console.log(str); // pkusoft2016pku2017 在不使用正则的情况下,每次执行只能替换一个字符,每次执行都是从0开始替换,有重复的,无法全部替换 2. replace的正则的替换 str = str.replace(/pku/g, 'pkusoft'); //

  • oracle中decode函数的使用方法示例

    decode的几种用法 1:使用decode判断字符串是否一样 DECODE(value,if1,then1,if2,then2,if3,then3,...,else) 含义为 IF 条件=值1 THEN RETURN(value 1) ELSIF 条件=值2 THEN RETURN(value 2) ...... ELSIF 条件=值n THEN RETURN(value 3) ELSE RETURN(default) END IF sql测试 select empno,decode(empn

  • Oracle中游标Cursor基本用法详解

    查询 SELECT语句用于从数据库中查询数据,当在PL/SQL中使用SELECT语句时,要与INTO子句一起使用,查询的 返回值被赋予INTO子句中的变量,变量的声明是在DELCARE中.SELECT INTO语法如下: SELECT [DISTICT|ALL]{*|column[,column,...]} INTO (variable[,variable,...] |record) FROM {table|(sub-query)}[alias] WHERE............ PL/SQL

  • 深入浅析js中的正则表达式

    阅读目录 正则表达式的创建 正则表达式中的特殊字符 \ (反斜杠) ^ $ *,  +,  .(小数点) ? (问号) (x) (?:x) x(?=y), x(?!y), x|y {n}, {n,m}: [xyz], [^xyz] 其他 正则表达式标志 正则表达式使用 很多时候多会被正则表达式搞的晕头转向,最近抽出时间对正则表达式进行了系统的学习,整理如下: 正则表达式的创建 两种方法,一种是直接写,由包含在斜杠之间的模式组成:另一种是调用RegExp对象的构造函数. 两种方法的创建代码如下:

随机推荐