`
sheilla100
  • 浏览: 1953 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

正则表达式在Oracle10g中的应用--REGEXP_INSTR函数

阅读更多
正则表达式在Oracle10g中的应用--REGEXP_INSTR函数

了解REGEXP_INSTR函数以前,我们先来了解INSTR函数。INSTR返回的是一个字符串在另外一个字符串中的位置,如字符串world在字符串hello world中的位置是7,即下面的语句返回值为7。
SELECT INSTR('hello world','world') FROM DUAL;
REGEXP_INSTR实现的功能与INSTR类似,不同的是REGEXP_INSTR用一个匹配模式代替了具体的字符串,这样就提供了更大的灵活性。下面的这个例子使用REGEXP_INSTR在字符串Joe Smith, 10045 Berry Lane, San Joeseph, CA 91234中返回5个数字组成的邮政编码的起始位置。如果正则表达式写为[[:digit:]]{5},你将会取得房间号10045而不是邮政编码91234,因为10045也是5个连续的数字。因此,我们要将正则表达式锚在行尾,这要用到元字符$,这样这个函数就会返回邮政编码在字符串中的位置,而不会受到房间号的数字数量的影响了。
SELECT REGEXP_INSTR('Joe Smith, 10045 Berry Lane, San Joseph, CA 91234','[[:digit:]]{5}$') AS rx_instr
FROM DUAL;
我们现在来扩展这个邮政编码,在前面的例子的基础上增加一个可选的4位数字。其模式为:[[:digit:]]{5}(-[[:digit:]]{4})?$。如果源字符串以5数字,或者以5数字+4数字邮政编码结束,你还是可以看到这个模式在串中的起始位置。
SELECT REGEXP_INSTR('Joe Smith, 10045 Berry Lane, San Joseph, CA 91234','[[:digit:]]{5}(-[[:digit:]]{4})?$') AS rx_instr
FROM DUAL;
SELECT REGEXP_INSTR('Joe Smith, 10045 Berry Lane, San Joseph, CA 91234-1234','[[:digit:]]{5}(-[[:digit:]]{4})?$')
AS rx_instr
FROM DUAL;
在这个例子中,在圆扩号内的子表达式(-[[:digit:]]{4})重复0次或1次,这是由重复操作符?来指定的。如果你试图用传统的SQL语句来实现相同的功能,那么即使是SQL专家也会感到困难的。
REGEXP_SUBSTR函数
了解REGEXP_SUBSTR函数以前,我们先来了解SUBSTR函数。SUBSTR函数利用参数指定的位置和字符个数返回一个字符串的子串,如SUBSTR(‘hello world’,1,5)返回子字符串hello。
SELECT SUBSTR('hello world',1,5) FROM DUAL;
REGEXP_SUBSTR函数是利用匹配模式从主字符串中抽取子串。在下面的例子中,函数返回匹配模式“, [^,]*,”的子字符串。正则表达式搜索一个逗号,后接一个空格;然后是0个或多个非逗号的字符(由[^,]*指定),最后是另一个逗号。这个模式类似于查找由逗号分隔的字符串。
SELECT REGEXP_SUBSTR('first field, second field, third field', ', [^,]*,') REGEXP_SUBSTR FROM DUAL;

查询结果为:
REGEXP_SUBSTR
---------------
, second field,
REGEXP_REPLACE函数
了解REGEXP_REPLACE函数以前,我们先来了解REPLACE函数。REPLACE函数根据指定的替代规则将字符串中的子串替换为另一个子串,如REPLACE(‘JACK and JUE’,’J’,’BL’),其替换结果为’BLACK and BLUE’。
SELECT REPLACE('JACK and JUE','J','BL') FROM DUAL;
REPLACE函数的另外一个用途就是替换多余的空格,如在字符串Joe   Smith中,Joe和Smith之间有3个空格,我们将这三个空格替换为一个。
SELECT REPLACE('Joe   Smith','   ',' ') FROM DUAL;
利用REGEXP_REPLACE函数可以做进一步的替换,下面的查询将两个或者多个空格替换为一个空格,( )子表达式包含一个空格,这个空格可以重复两次或多次,这个重复次数是由{2,}指定的。
SELECT REGEXP_REPLACE('500   Oracle       Parkway,    Redwood   Shores, CA', '( ){2,}',' ') REGEXP_REPLACE
FROM DUAL;

查询结果为:
REGEXP_REPLACE
--------------------------------------
500 Oracle Parkway, Redwood Shores, CA
实验
以上测试在Oracle10g数据库中均可实现,由于所用到的都是DUAL表,因此通过任何用户连接到Oracle都可以。
分享到:
评论

相关推荐

    Oracle中使用正则表达式

    Oracle数据库自10g版本开始引入了对正则表达式的支持,这一功能极大地增强了数据库在文本处理方面的能力。正则表达式是一种非常灵活且强大的工具,用于模式匹配、搜索以及替换等操作。在Oracle中使用正则表达式可以...

    oracle_10g正则表达式_REGEXP_LIKE_用法

    下面将详细介绍`REGEXP_LIKE`的用法以及如何在Oracle 10g中使用正则表达式进行数据筛选。 ### Oracle 10g正则表达式与`REGEXP_LIKE` Oracle 10g支持多种正则表达式相关的函数,包括但不限于: 1. **`REGEXP_LIKE`...

    Oracle正则表达式详解(用法+实例)

    Oracle 10g 引入了一系列新的函数来支持正则表达式的使用,包括 `REGEXP_LIKE`、`REGEXP_INSTR`、`REGEXP_SUBSTR` 和 `REGEXP_REPLACE`。这些函数的使用方式类似于传统的 SQL 函数 `LIKE`、`INSTR`、`SUBSTR` 和 `...

    Oracle数据库正则表达式

    从 Oracle 10g 开始,Oracle 内建了符合 IEEE POSIX (Portable Operating System for Unix)标准的正则表达式,同时也支持 Perl 的正则表达式规则。 正则表达式的组成 ----------------- 正则表达式由一个或多个...

    正则表达式在Oracle中的应用与实现.pdf

    在Oracle 10g中,增加了REGEX P—LIKE操作符、REGEXP_INSTR、REGEXP_SUBSTR和REGEXP_REPLACE等函数,使得在Oracle中也能方便地使用正则表达式。 正则表达式的定义是指使用某种语法定义的字符串模式,引擎采用这种...

    Oracle正则表达式函数全面解析

    本文将详细介绍Oracle数据库中支持的四个主要正则表达式函数:`REGEXP_LIKE`、`REGEXP_INSTR`、`REGEXP_SUBSTR`和`REGEXP_REPLACE`,以及如何使用POSIX正则表达式。 #### 二、Oracle正则表达式基础 ##### 1. POSIX...

    Oracle中的正则表达式

    Oracle中的正则表达式函数提供了强大的字符串处理功能,能够大大提高数据库应用程序的效率和可读性。 正则表达式的基本概念包括: * 元字符和普通字符:元字符是指在正则表达式中表示特殊含义的字符,如"."、"\"、...

    ORACLE正则表达式

    ORACLE 正则表达式是 Oracle 10g 中引入的一种功能强大的字符串匹配模式。它允许用户使用正则表达式来匹配字符串,从而实现复杂的字符串匹配和提取操作。 正则表达式的基本概念 -------------------- 正则表达式是...

    oracle 正则表达式用法

    ### Oracle正则表达式用法详解 #### 一、引言 随着信息技术的快速发展,数据库管理系统(DBMS)作为数据管理...随着正则表达式在Oracle数据库中的广泛应用,越来越多的开发者开始认识到其在日常工作中所具有的巨大价值。

    Oracle 10g正则表达式函数

    Oracle 10g 正则表达式函数是 Oracle 数据库中的一种功能强大且灵活的字符串处理函数。它可以实现复杂的字符串匹配和提取功能,非常适合处理非结构化数据。 1. 元字符 在 Oracle 10g 正则表达式中,元字符是特殊的...

    Oracle正则表达式函数

    1. REGEXP_LIKE:这是Oracle中最常用的正则表达式函数,它用于在WHERE子句中进行模式匹配。语法结构为`REGEXP_LIKE(column, pattern, [match_parameter])`。其中,`column`是你要检查的列,`pattern`是正则表达式...

    Oracle Database 10g 中的正则表达式

    在Oracle 10g中,正则表达式通过SQL函数和WHERE子句操作符实现,为数据验证、模式查找、替换提供了前所未有的灵活性。 1. 正则表达式基础 正则表达式由字符文字和元字符组成。简单的正则表达式如"cat"可以匹配包含...

    Oracle分析函数基本概念和语法总结及Regexp_***用法

    关于`REGEXP_***`系列函数,它们是正则表达式的相关函数,用于在字符串中进行模式匹配和操作: 1. `REGEXP_SUBSTR`:返回匹配正则表达式的子串。 2. `REGEXP_INSTR`:返回匹配正则表达式的位置索引。 3. `REGEXP_...

    ORACLE.PLSQL正则表达式概述

    在深入探讨ORACLE.PLSQL中的正则表达式之前,我们首先需要理解正则表达式的概念以及它在数据库查询中的应用价值。正则表达式(Regular Expression),简称regex或regexp,是一种用于模式匹配的强大工具,广泛应用于...

    oracle正则表达式总结

    Oracle数据库从10g版本开始引入了正则表达式的支持,极大地增强了SQL语言处理文本的能力。正则表达式是一种强大的文本处理工具,能够帮助我们执行复杂的字符串搜索和替换任务。在Oracle中,主要通过四个新的函数来...

    Oracle 10g正则表达式

    在Oracle 10g中,主要提供了四个与正则表达式相关的函数: 1. **REGEXP_LIKE**: 类似于`LIKE`函数,用于判断字符串是否符合指定的正则表达式模式。例如,要查找以数字"3"开头,后面跟着任意两个字符,然后是数字"41...

    oracle正则表达式.ppt

    Oracle正则表达式是Oracle 10g及后续版本引入的一种强大的文本处理工具,它极大地增强了SQL查询的灵活性。...在10g之后的版本中,Oracle继续优化和扩展了正则表达式支持,使其成为处理和分析文本数据的强大工具。

    Oracle 正则表达式介绍

    在Oracle 10g版本中,正则表达式得到了进一步的支持,引入了新的SQL操作符REGEXP_LIKE以及与之相关的函数REGEXP_INSTR、REGEXP_SUBSTR和REGEXP_REPLACE。 1. 正则表达式的基本概念: 正则表达式由字符字面量和元...

    Oracle正则表达式函数介绍.rar

    在Oracle中,正则表达式通过内置的函数实现,这些函数极大地增强了SQL查询的能力。 1. **REGEXP_LIKE()** `REGEXP_LIKE()` 是Oracle中使用正则表达式进行模式匹配的主要函数。它的基本语法是: ``` REGEXP_LIKE...

    Oracle正则表达式的应用

    在Oracle 10g及更高版本中,有四个主要的正则表达式相关函数,分别是`regexp_like`、`regexp_substr`、`regexp_instr`和`regexp_replace`。 1. `regexp_like`函数: - 该函数类似于标准的`like`操作,但支持正则...

Global site tag (gtag.js) - Google Analytics