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

5星(超过95%的资源)
所需积分/C币:50 2013-09-13 15:20:28 406KB PDF
1238
收藏 收藏
举报

Oracle正则表达式详解,用法+实例。
-数据插入 insert into fzq values (1,1234560) insert into fzq values (2,1234560 insert into fzg values C3’,1b3b560)} insert into fzg values (4,abc); insert into fzg values (,abcde); insert into fzq values (6’, ADREaSX) insert into fzg values (7,12345) insert into fzg values (8,adc de) insert into fzg values (adc. de) insert into fzg values (10,1By); insert into fzq values (10,abcbvbnb): insert into fzq values (1111114560); insert into fzg values (1111124560") regexp like 查询vaue中以1开头60结束的记录并且长度是7位 select from fzq where value like 1 _60 select from fzq where regexp_like value, 1.... 60); 查询vaue中以1开头60结束的记录并且长度是7位并且全部是数字的记录。 -使用like就不是很好实现了 select x from fzq where regexp_like(value, 1[0-9R4360) 也可以这样实现,使用字符集 select from fzq where regexp_like(value, 1[[: digit: 1460) 查询vaue中不是纯数字的记录 select from fzq where not regexp_like (value A[[: digit: 1]+$); 查询vaue中不包含任何数字的记录 select from fzq where regexp like (value l [: digit: 11+$); 查询以12或者1b开头的记录不区分大小写 select from fzq where regexp_ like(value 1[2b],b) 查询以12或者1b开头的记录区分大小写 select from fzq where regexp_like (value 1[2B]) 查询数据中包含空白的记录。 select from fzq where regexp_like (value, ll space: ] 查询所有包含小写字母或者数字的记录 select from fzq where regexp_ like(value (la-z]+[0-9]+$) -查询任何包含标点符号的记录 select from fzq where regexp_like(value, [[ punct: ]) 理解它的语法就可以了。其它的函数用法类似。 -际应用 查询包含A,E,F的字段 sQL> Select性质From部门 Where Regexp_Like(性质,',*[A.*[E]*F].*); 性质 AB..EF A, E, F,G ABCDEFGHIJLMN A,,..,LMN A, E,F AB..EFG A, E, F A, B, CD,E,FGHIJ,LMN A, EF,G AEF AEF A,D,E F 12 rows selected 正则表达式的一个有用的特性是能够存储子表达式供以后重用;这也被称为后向 引用。它允许复杂的替换功能,如在新的位置上交换模式或显示重复出现的单 词或字母。子表达式的匹配部分保存在临时缓冲区中。缓冲区从左至右进行编号 并利用/ digit符号进行访问,其中到之问的一个数字,它匹配 第个子表达式,子表达式用一组圆括号来显示 接下来的例子显示了通过按编号引用各个子表达式 将姓名E1 len hildi smith转变为 Smith, Ellen hildi。 SELECT REGEXP REPLACE( Ellen hildi smith (.*)(.*)(.*)’,’/3,/1/23) FroM dual REGEXP REPLACE CEL Smith. Ellen hildi 该 语句显示了用圆括号括住的三个单独的子表达式。每一个单独的子表达 式包含一个匹配元字符.,并紧跟着*元字符,表示任何字符(除换行符之 外)都必须匹配零次或更多次。空格将各个子表达式分开,空格也必须匹配。圆 括号创建获取值的了表达式,并且可以用/ digit来引用。第一个子表达式被赋 值为/1,第二个/2,以此类推。这些后向引用被用在这个函数的最后一个参 数/3,//2中,这个函数有效地返回了替换子字符串,并按期望的格式米 排列它们(包括逗号和空格)。详细说明了该止则表达式的各个组成部分。 后向引用对替换、格式化和代替值非常有川,并且您可以用它们来査找相邻出现 的值。接下米的例子显示了使用 函数来查找任意被空格隔 开的重复出现的字母数字值。显小的结果给出了识别重复出现的单词is的子字 符串。 正则表达式的实际应用 您不仅可以在队列中使用正则表达式,还可以在使用SQL操作符或函数的任何 地方(比如说在PL/SQL语言中)使用正则表达式。您可以编写利用正则表达式 功能的触发器,以验证、生成或提取值。 接下来的例子演示了您如何能够在一次列检查约束条件中应用 操作符来进行数据验证。它在插入或更新吋检验正确的社会保险号码格式。如 123456789和123456789之类格式的社会保险号码对于这种列约束条件是可 接受的值。有效的数据必须以三个数字开始,紧跟着一个连字符,再加两个数字 和一个连字符,最后又是四个数字。另一种表达式只允许9个连续的数字。竖 线符号()将各个选项分开。 ALTER TABLE Students ADD CONSTRAINT stud ssn ck CHECK (REGEXP LIKE (ssn ([: digit:]]{3}-[[: digit:]]{2}-[[: digit:]]{4}[: digit:]{9)})$3)) 由∧和§指示的开头或结尾的字符都是不可接受的。确保您的正则表达式没有 分成多行或包含任何不必要的空格,除非您希望格式如此并相应地进行匹配 因为止则表达式有助于解决复杂的问题,所以它们是非常强大的。止则表达式的 些功能难于用传统的SQL函数来仿效 当您了解了这种稍显神秘的语言的基础构建程序块时,正则表达式将成为您的工 具包的不可缺少的一部分(不仅在sαL环境下也在其它的编程语言环境下)。为 了使您的各个模式正确,虽然尝试和错误有时是必须的,但正则表达式的简洁和 强大是不容置疑的。 表:定位元字符 元字符 说明 使表达式定位至一行的开头 使表达式定位至一行的未尾 表:量词或重复操作符 量词 说明 半 兀配次或更多次 配次或次 匹配次或更多次 m 正好匹配次 m 至少匹配次 m. n 至少匹配次但不超过次 表:预定义的 字符类 字 符类 说明 [: alpha 字母字符 [: lower: I 小写字母字符 [: upper: 人写字母字符 [:digit: 数 dinan 字母数字字符 [: space 空白字符(禁止打印),如回车符、换行符、竖直制表符和换页符 punch 标点字符 L: cntrl 控制字符(禁止打印) pr⊥nL 可打印字符 表:表达式的替換匹配和分组 元字符 说明 替换 分隔替换选项,通常与分组操作符()一起使用 ()分组将子表达式分组为一个替换单元量词单元或后向引用单元(参见后向引用部分) char1字符列表示一个字符列表:一个字符列表中的大多数元字符(除字符类、和一元字符 表 之外)被玛解为文字 表: REGEXP LIKE操作符 语法 说明 source string支持字符数据类型(CHAR、 REGEXP LIKE( source string, VARCHAR2、CLOB、 NCHAR、 NVARCHAR2和 NCLOB pattern 但不包括L0NG)。 pattern参数是正则表达式的另一个 L, match parameter 名称。 match parameter允许可选的参数(如处理换 行符、保留多行格式化以及提供对区分大小写的控制) 表: REGEXP INSTR函数 说明 REGEXP INSTR(Source string 该函数查找 pattern,并返回该模式的第一个位置 您可以随意指定您想要开始搜索的 pattern start posltion. occurrence参数默认为 start position 除非您指定您要査找接下米出现的一个模式。 occurrence return option的默认值为,它返回该模式的起始 return option match parameter) 位置;值为则返回符合匹配条件的下一个字符的起始位 置 表 位数字加位邮政编码表达式的说明 说明 必须匹配的空白 [: dig 数字类 字符列表的结尾 5 字符列表正好重复出现次 子表达式的开头 一个文字连字符,因为它不是一个字符列表内的范围元字符 字符列表的开头 [: digit [: digit:]类 字符列表的开头 字符列表的结尾 4 字符刎表正好重复出现次 结束圆括号,结束子表达式 ?量词匹配分组的子表达式或次,从而使得位代码可选 定位元字符,指示行尾 表: REGEXP SUBSTR函数 语法 说明 REGEXP SUBSTR(Source string pattern REGEXP SUBSTR函数返回匹配模式的子字 position occurrence 符串 match parameter 表: REGEXP REPLACE函数 语法 说明 REGEXP REPLACE(source string pattern 该函数用一个指定的 replace string来替换 replace string L, position 匹配的模式,从而允许复杂的“搜索并替换”操作。 OCcurrence, match parameter]] 表:后向引用元字符 元字符 说明 紧跟着一个到之间的数字,反斜线匹配之前的用括号括起来的第子 反斜 表达式。 /digit 线 (注意:反斜线在正则表达式中有另一种意义,取决于上下文,它还可能表示 字符。 表:模式交换正则表达式的说明 正则表达式项目 说明 第一个子表达式的开头 匹配除换行符之外的任意单字符 水 車复操作符,兀配之前的.元字符到次 第一个子表达式的结尾;匹配结果在/1 中获取(在这个例子中,结果为Elle。) 必须存在的空白 第二个子表达式的开头 兀配除换行符之外的仟意单个字符 水 重复操作符,匹配之前的,元字符到次 第二个子表达式的结尾;匹配结果在/2 屮获取(在这个例子中,结果为 Hildi。) 空白 ( 第三个子表达式的开头 兀配除换行符之外的仟意单字符 重复操作符,匹配之前的.元字符到次 第三个子表达式的结尾:匹配结果在/3 中获取(在这个例子中,结果为 Smith。) 表:社会保险号码正则表达式的说明 正则表达式项目 说明

...展开详情
试读 12P Oracle正则表达式详解(用法+实例)
立即下载
限时抽奖 低至0.43元/次
身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
buligantan 不错,就是太少了
2014-08-28
回复
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
  • 分享王者

关注 私信
上传资源赚钱or赚积分
最新推荐
Oracle正则表达式详解(用法+实例) 50积分/C币 立即下载
1/12
Oracle正则表达式详解(用法+实例)第1页
Oracle正则表达式详解(用法+实例)第2页
Oracle正则表达式详解(用法+实例)第3页

试读结束, 可继续读1页

50积分/C币 立即下载