ORACLE终于在10G中提供了对正则表达式的支持,以前那些需要通过LIKE来进行的复杂的匹配就可以通过使用正则表达式更简单的实现。
Oracle10g正则表达式提高了SQL灵活性。有效的解决了数据有效性,重复词的辨认,无关的空白检测,或者分解多个正则组成的字符串等问题。
Oracle10g支持正则表达式的四个新函数分别,它们使用POSIX正则表达式代替了老的百分号(%)和通配符(_)字符。
1,REGEXP_LIKE:与LIKE的功能相似
2,REGEXP_INSTR:与INSTR的功能相似:返回字符的个数
3,REGEXP_SUBSTR:与SUBSTR的功能相似:截取字符串
4,REGEXP_REPLACE:与REPLACE的功能相似
在新的函数中使用正则表达式来代替通配符‘%’和‘_’。
正则表达式由标准的元字符(metacharacters)所构成:
'^'匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合。
'$'匹配输入字符串的结尾位置。如果设置了RegExp对象的Multiline属性,则$也匹配'n'或'r'。
'.'匹配除换行符n之外的任何单字符。
'?'匹配前面的子表达式零次或一次。
'+'匹配前面的子表达式一次或多次。
'*'匹配前面的子表达式零次或多次。
'|'指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的字符串。
'()'标记一个子表达式的开始和结束位置。
'[]'标记一个中括号表达式。
'{m,n}'一个精确地出现次数范围,m=<出现次数<=n,'{m}'表示出现m次,'{m,}'表示至少出现m次。
num匹配num,其中num是一个正整数。对所获取的匹配的引用。
字符簇:
[[:alpha:]]任何字母。
[[:digit:]]任何数字。
[[:alnum:]]任何字母和数字。
[[:space:]]任何白字符。
[[:upper:]]任何大写字母。
[[:lower:]]任何小写字母。
[[:punct:]]任何标点符号。
[[:xdigit:]]任何16进制的数字,相当于[0-9a-fA-F]。
各种操作符的运算优先级
1.转义符
2.(),(?:),(?=),[]圆括号和方括号
3.*,+,?,{n},{n,},{n,m}限定符
4.^,$,anymetacharacter位置和顺序
4.|“或”操作
示例:
一、REGEXP_LIKE
/*Formattedon2009/11/1119:03(FormatterPlusv4.8.8)*/
SELECT*
FROMscott.emp
WHEREREGEXP_LIKE(ename,'^a{1,3}');
SELECT*
FROMscott.emp
WHEREREGEXP_LIKE(ename,'a{1,2}');
SELECT*
FROMscott.emp
WHEREREGEXP_LIKE(ename,'^a.*e$');
SELECT*
FROMscott.emp
WHEREREGEXP_LIKE(ename,'^[[:lower:]]|[[:digit:]]');
SELECT*
FROMscott.emp
WHEREREGEXP_LIKE(ename,'^[[:lower:]]');
SELECTsal
FROMscott.emp
WHEREREGEXP_LIKE(sal,'[^[:digit:]]');
SELECTsal
FROMscott.emp
WHEREREGEXP_LIKE(sal,'^[^[:digit:]]');
二、REGEXP_INSTR
/*Formattedon2009/11/1119:03(FormatterPlusv4.8.8)*/
SELECTREGEXP_INSTR(ename,'[[:digit:]]$')
FROMscott.emp;
SELECTREGEXP_INSTR(mc,'[[:digit:]]+$')
FROMscott.emp;
SELECTREGEXP_INSTR('Thepriceis$400.','$[[:digit:]]+')
FROMDUAL;
SELECTREGEXP_INSTR('onetwothree','[^[[:lower:]]]')
FROMDUAL;
SELECTREGEXP_INSTR(',,,,,','[^,]*')
FROMDUAL;
SELECTREGEXP_INSTR(',,,,,','[^,]')
FROMDUAL;
三、REGEXP_SUBSTR
/*Formattedon2009/11/1119:04(FormatterPlusv4.8.8)*/
SELECTREGEXP_SUBSTR(ename,'[a-z]+')
FROMscott.emp;
SELECTREGEXP_SUBSTR(sal,'[0-9]+')
FROMscott.emp;
SELECTREGEXP_SUBSTR('aababcde','^a.*b')
FROMDUAL;
四、REGEXP_REPLACE
/*Formattedon2009/11/1119:06(FormatterPlusv4.8.8)*/
SELECTREGEXP_REPLACE('JoeSmith','(){2,}',',')ASrx_replace
FROMDUAL;
SELECTREGEXP_REPLACE('aabbcc','(.*)(.*)(.*)','3,2,1')
FROMDUAL;
相关推荐
Oracle 10g正则表达式详解,REGEXP_LIKE,REGEXP_INSTR,REGEXP_SUBSTR,REGEXP_REPLACE
Oracle 10g正则表达式函数,包括正则表达式的规则等
详细介绍了Oracle10g中对正则表达式的支持与分析,Oracle的相关知识介绍,正则表达式的相关知识介绍
oracle_10g正则表达式_REGEXP_LIKE_用法
Oracle 10g 正则表达式介绍
ORACLE 10G 中经常会使用到的正则表达式的说明及例子
Oracle Database 10g 中的正则表达式特性是一个用于处理文本数据的强大工具 Oracle Database 10g 的一个新特性大大提高了您搜索和处理字符数据的能力。这个特性就是正则表达式,是一种用来描述文本模式的表示...
全英oracle正则表达式参考手册 Oracle Regular Expressions Pocket Reference is part tutorial and part quick-reference. It's suitable for those who have never used regular expressions before, as well as ...
一.正则表达式 oracle的正则表达式(regular expression)简单介绍 ...Oracle 10g正则表达式提高了SQL灵活性。有效的解决了数据有效性, 重复词的辨认, 无关的空白检测,或者分解多个正则组成 的字符串等问题。
oracle10g 正则表达式,学习正则表达式非常好用!!值得收藏学习。
13、ORACLE 10G正则表达式 14、使用HINT 15、PARITION分区 16、并行操作 17、扩展DDL和DML语句 18、MODEL语句 19、10G闪回查询 20、专题-行列转换 21、专题-连续值和累计值问题 22、专题-NULL和DUAL详解 23、专题-...
Oracle 的正规表达式的实施是以各种 SQL 函数和一个 WHERE 子句操作符的形式出现的。如果您不熟悉正规表达式,那么这篇文章可以让您了解一下这种新的极其强大然而表面上有点神秘的功能。已经对正规表达式很熟悉的...
1、正则表达式写法: CREATE OR REPLACE FUNCTION Func_checkidcard (p_idcard IN VARCHAR2) RETURN INT IS v_regstr VARCHAR2 (2000); v_sum NUMBER; v_mod NUMBER; v_checkcode CHAR (11) := '10X98765432'; ...
正则表达式具有强大、便捷、高效的文本处理功能。能够添加、删除、分析、叠加、插入和修整各种类型的文本和数据。Oracle从10g开始支持正则表达式
第8章 正则表达式搜索 第9章 数值处理 第10章 日期:过去、现在及日期的差 第11章 转换函数与变换函数 第12章 分组函数 第13章 当一个查询依赖于另一个查询时 第14章 一些复杂的技术 第15章 更改数据:插入﹑更新﹑...
本书是专门为oracle开发人员而提供的编程指南 通过学习本书 读者不仅可以掌握编写sql语句和pl/sql块的基础知识 而且还可以掌握sql高级特征 正则表达式 flashback查询 merge语句 sql:1999连接 和pl/sql高级特征 ...
通过学习《精通Oracle 10g SQL和PL/SQL》,读者不仅可以掌握SQL和PL/SQL的基础知识,而且还可以掌握SQL高级特征(正则表达式、Flashback查询、MERGE语句、SQL:1999连接)和PL/SQL高级特征(记录类型、集合类型、对象...
如果在sql中增加正则表达式,可以更加灵活,增加实用性
程序员必备javascript特效+正则表达式+oracle10g文档 很实用的文档