(Les19 Regular expression support)[20180106]

2018-01-07 06:16:45来源:cnblogs.com作者:请点..头像人点击

分享
学习目标    -正则元字符串    -SQL语句中使用正则搜索    -SQL语句中使用正则匹配    -SQL语句中使用正则替代字符串 正则表达式    Oracle数据库10g引入对正则表达式的支持。    实现了符合UNIX可移植操作系统(POSIX)标准,由电气和电子工程师协会(IEEE)控制,ASCII数据匹配的语义和语法。    正则表达式是一种描述简单和复杂的搜索和操作模式的方法。 正则(POSIX )元字符    '*' 匹配前面的表达式一次或多次    '|' 指明两项之间选择其一    '^' 匹配输入字符串的开始位置,注意,若是在方括号表达式中使用^,此时它表示不接受该字符集。    '[]' 标记一个中括号表达式    '{m}'  表示出现几次    '{m,n}' 表示出现次数的范围值 m<=出现次数<=n    '/'  有4种不同含义,'/'反斜杠自身、/num 匹配的引用、/n转义符和什么都不是。    '+'  匹配前面的子表达式一次或多次    '?' 匹配前面的子表达式零次或一次    '.' 匹配除换行符之外的任何单字符    '()' 标记一个子表达式的开始和结束位置     '[::]' 表示是一个字符簇 :            [[:alpha:]] 任何字母            [[:digit:]] 任何数字            [[:alnum:]] 任何字母和数字            [[:space:]] 空白字符            [[:upper:]] 大写字母            [[:lowe:]] 小写字母            [[:punct:]] 任何标点符号            [[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]               正则表达式函数            REGEXP_LIKE 与LIKE的功能相似,匹配相似字符串            REGEXP_REPLACE 与REPLACE功能相似,替换字符串            REGEXP_INSTR 与INSTR功能相似,标识字符下标            REGEXP_SUBSTR 与SUBTR功能相似,截取指定位置字符串            REGEXP_COUNT 与COUNT相似,计算某个样式反复出现的次数             它们在用法上与Oracle SQL函数LIKE、INSTR、SUBSTR、REPLACE用法相同,但是它们使用POSIX正则表达式替代了老的百分号(%)和通配符(_)字符。          REGEXP_LIKE (srcstr,pattern [,match_option])        REGEXP_INSTR (srcstr,pattern [,position [,occurrence [,return_option [,match_option]]]])        REGEXP_SUBSTR (srcstr,pattern [,position [,occurrence [,match_option]]])        REGEXP_REPLACE (srcstr,pattern [,replacestr [,position [, occurrence [,match_option]]]])   
例子一求last_name中含有G[一个字符]g的名称select * from employeeswhere  regexp_like (last_name,'(G.g){1}')  ;LAST_NAME            EMPLOYEE_ID MANAGER_ID-------------------- ----------- ----------Gaga                         203        200例子二insert into employees values('Regexp02_test',208,200);求出last_name名称中含有数字的select *from employeeswhere regexp_instr(last_name,'[[:digit:]]')>1 ; LAST_NAME            EMPLOYEE_ID MANAGER_ID-------------------- ----------- ----------Regexp02_test                208        200 例子三截取last_name数值之前的字符串col last_name format a20select regexp_substr(last_name,'[[:alpha:]]*') last_name,employee_id,manager_idfrom employees; LAST_NAME            EMPLOYEE_ID MANAGER_ID-------------------- ----------- ----------Dereck                       100          1Gary                         200        100Klec                         300        100Gaga                         203        200Wendy                        204        200Xi                           205        200Tinan                        206        200Ling                         207        200Owen                         301        300Yi                           302        300Regexp                       208        20011 rows selected. 例子四将last_name中的数值替换成**号col last_name format a20select regexp_replace(last_name,'[[:digit:]]','*') last_name,employee_id,manager_idfrom employees;LAST_NAME            EMPLOYEE_ID MANAGER_ID-------------------- ----------- ----------Dereck                       100          1Gary                         200        100Klec                         300        100Gaga                         203        200Wendy                        204        200Xi                           205        200Tinan                        206        200Ling                         207        200Owen                         301        300Yi                           302        300Regexp**_test                208        200 11 rows selected. 例子五计算last_name中数值出现的次数col last_name format a20select last_name,regexp_count(last_name,'[[:digit:]]') t_count,employee_id,manager_idfrom employees; LAST_NAME               T_COUNT EMPLOYEE_ID MANAGER_ID-------------------- ---------- ----------- ----------Dereck                        0         100          1Gary                          0         200        100Klec                          0         300        100Gaga                          0         203        200Wendy                         0         204        200Xi                            0         205        200Tinan                         0         206        200Ling                          0         207        200Owen                          0         301        300Yi                            0         302        300Regexp02_test                 2         208        200 11 rows selected. 
学习总结:    1.正则表达式的作用及oracle 10g开始支持功能并遵循(POSIX)标准    2.正则表达式所需的元操作字符    3.正则表达式常见的几个函数并且实践如果使用

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台