Oracle 10g支持正则表达式

ORACLE终于在10G中提供了对正则表达式的支持,以前那些需要通过LIKE来进行的复杂的匹配就可以通过使用正则表达式更简单的实现。

Oracle 10g正则表达式提高了SQL灵活性。有效的解决了数据有效性, 重复词的辨认, 无关的空白检测,或者分解多个正则组成的字符串等问题。

1、Oracle 10g支持正则表达式的四个新函数分别,它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。

(1)REGEXP_LIKE :与LIKE的功能相似

(2)REGEXP_INSTR :与INSTR的功能相似 : 返回字符的个数

(3)REGEXP_SUBSTR :与SUBSTR的功能相似 : 截取字符串

(4)REGEXP_REPLACE :与REPLACE的功能相似

在新的函数中使用正则表达式来代替通配符‘%’和‘_’。

2、正则表达式由标准的元字符(metacharacters)所构成:

'^' 匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合。

'$' 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 'n' 或 'r'。

'.' 匹配除换行符 n之外的任何单字符。

'?' 匹配前面的子表达式零次或一次。

'+' 匹配前面的子表达式一次或多次。

'*' 匹配前面的子表达式零次或多次。

'|' 指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的字符串。

'( )' 标记一个子表达式的开始和结束位置。

'[]' 标记一个中括号表达式。

'{m,n}' 一个精确地出现次数范围,m=<出现次数<=n,'{m}'表示出现m次,'{m,}'表示至少出现m次。

num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。

3、字符簇:

[[:alpha:]] 任何字母。

[[:digit:]] 任何数字。

[[:alnum:]] 任何字母和数字。

[[:space:]] 任何白字符。

[[:upper:]] 任何大写字母。

[[:lower:]] 任何小写字母。

[[:punct:]] 任何标点符号。

[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。

4、各种操作符的运算优先级

(1)转义符

(2)(), (?:), (?=), [] 圆括号和方括号

(3)*, +, ?, {n}, {n,}, {n,m} 限定符

(4)^, $, anymetacharacter 位置和顺序

(5)| “或”操作

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/

5、示例

(1)REGEXP_LIKE

/* Formatted on 2009/11/11 19:03 (Formatter Plus v4.8.8) */

SELECT *

FROM scott.emp

WHERE REGEXP_LIKE (ename, '^a{1,3}');

SELECT *

FROM scott.emp

WHERE REGEXP_LIKE (ename, 'a{1,2}');

SELECT *

FROM scott.emp

WHERE REGEXP_LIKE (ename, '^a.*e$');

SELECT *

FROM scott.emp

WHERE REGEXP_LIKE (ename, '^[[:lower:]]|[[:digit:]]');

SELECT *

FROM scott.emp

WHERE REGEXP_LIKE (ename, '^[[:lower:]]');

SELECT sal

FROM scott.emp

WHERE REGEXP_LIKE (sal, '[^[:digit:]]');

SELECT sal

FROM scott.emp

WHERE REGEXP_LIKE (sal, '^[^[:digit:]]');

(2)REGEXP_INSTR

/* Formatted on 2009/11/11 19:03 (Formatter Plus v4.8.8) */

SELECT REGEXP_INSTR (ename, '[[:digit:]]$')

FROM scott.emp;

SELECT REGEXP_INSTR (mc, '[[:digit:]]+$')

FROM scott.emp;

SELECT REGEXP_INSTR ('The price is $400.', '$[[:digit:]]+')

FROM DUAL;

SELECT REGEXP_INSTR ('onetwothree', '[^[[:lower:]]]')

FROM DUAL;

SELECT REGEXP_INSTR (',,,,,', '[^,]*')

FROM DUAL;

SELECT REGEXP_INSTR (',,,,,', '[^,]')

FROM DUAL;

(3)REGEXP_SUBSTR

/* Formatted on 2009/11/11 19:04 (Formatter Plus v4.8.8) */

SELECT REGEXP_SUBSTR (ename, '[a-z]+')

FROM scott.emp;

SELECT REGEXP_SUBSTR (sal, '[0-9]+')

FROM scott.emp;

SELECT REGEXP_SUBSTR ('aababcde', '^a.*b')

FROM DUAL;

(4)REGEXP_REPLACE

/* Formatted on 2009/11/11 19:06 (Formatter Plus v4.8.8) */

SELECT REGEXP_REPLACE ('Joe Smith', '(){2,}', ',') AS rx_replace

FROM DUAL;

SELECT REGEXP_REPLACE ('aa bb cc', '(。*) (。*) (。*)', '3, 2, 1')

FROM DUAL;

时间: 2024-09-11 20:23:06

Oracle 10g支持正则表达式的相关文章

Oracle 10g支持启动手动归档

不细看doc还真不行. SQL> shutdown immediate 数据库已经关闭. 已经卸载数据库. ORACLE 例程已经关闭. SQL> startup mount ORACLE 例程已经启动. Total System Global Area 104857600 bytes Fixed Size 1247540 bytes Variable Size 96470732 bytes Database Buffers 4194304 bytes Redo Buffers 2945024

CentOS 6.3 Linux系统下安装Oracle 10g R2

一.硬件要求 1.内存 & swap Minimum: 1 GB of RAM Recommended: 2 GB of RAM or more 检查内存情况 # grep MemTotal /proc/meminfo # grep SwapTotal /proc/meminfo 2.硬盘 由于CentOS安装后差不多有4~5G,再加上Oracle等等的安装,所以请准备至少10G的硬盘空间. 检查磁盘情况 # df -h 二.软件 系统平台:CentOS 6.3(x86_64) CentOS-6

CentOS 6.5下安装Oracle 10g

一.硬件要求 1.内存 & swa Minimum: 1 GB of RAM  Recommended: 2 GB of RAM or more 检查内存情况 # grep MemTotal /proc/meminfo 注意大小写 # grep SwapTotal /proc/meminfo 注意大小写 2.硬盘 由于CentOS安装后差不多有4~5G,再加上Oracle等等的安装,所以请准备至少10G的硬盘空间. 检查磁盘情况 # df -h 二.软件 系统平台:CentOS 6.3(x32)

oracle 10g正则表达式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 正则表达式由标准的

Oracle中REGEXP_SUBSTR及其它支持正则表达式的内置函数小结

Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下:在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20','23'的集合. REGEXP_SUBSTR函数格式如下:function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)__srcstr :需要进行正则处理的字符串__pattern :进行匹配的正则表达式,匹配的值将返回,返回策略由__occurrence决定__po

Oracle 10G First Release的新特性简介(下)

oracle Oracle 10G First Release的新特性简介(下) By Fenng 2003-07-10 注:近日Oracle已经正式宣布该版本的Oracle命名为10G,其中的G为Grid之意.特此更正. 高可用性的加强 1.缩短应用和数据库升级的宕机时间 通过使用standby数据库.允许在不同版本的standby和产品数据库间切换.现有的联机重定义功能能够支持一步克隆所有相关的数据库对象. 2.回闪(Flashback)任何错误 该版本的Oracle也扩展了Flashbac

如何在redhat 9,redhat ELAS 3/2.1,redat FC1 上安裝oracle 10g

oracle 本文將指導大家安裝以下內容: - Oracle 10g (10.1.0) on Red Hat Enterprise Linux Advanced Server 3 (RHELAS3)- Oracle 10g (10.1.0) on Red Hat Enterprise Linux Advanced Server 2.1 (RHELAS2.1)- Oracle 10g (10.1.0) on Red Hat 9 (RH9)- Oracle 10g (10.1.0) on Red H

Oracle 10g vs PostgreSQL 8 vs MySQL 5(外围特性评比)

mysql|oracle This is my comparison of installing and getting started with Oracle 10g, PostgreSQL 8 and MySQL 5. This is what I consider the comparison of state of the art for three categories of DB: Commercial vs. Academe vs. Internet Model. This is

Installing Oracle 10g on RHEL AS 3 Step-by-Step

oracle Installing Oracle 10g on RHEL AS 3 Step-by-Step  --转载 作者: Fenng Installing Oracle 10g on Red Hat Enterprise Linux Advanced Server 3 (RHEL 3) V 0.21 不久前,Oracle(甲骨文)公司在美国加州的总部宣布, Oracle 10g 数据库 与 Oracle RAC 在 TPC-H 基准测试中创造了新的世界纪录.这是个令人震惊的消息.因为这个