oracle10g表达式规则操作

 

1.1         oracle10g表达式规则操作

1.     表达式规则使用

说明:oracle10g表达式官方网站:

     http://www.oracle.com/technology/oramag/webcolumns/2003/techarticles/rischert_regexp_pt2.html

a.      REGEXP_SUBSTR 截取字符规则表达式

SELECT REGEXP_SUBSTR('first field,sfoiweo,second field,

third field','[^,]*,[^,]*') from dual;  --说明:输出字符串第二和第三

b.      REGEXP_LIKE 相当于like判断

SELECT emp.ename FROM emp WHERE

REGEXP_LIKE(emp.ename, '[^[:digit:]]');   --查找非数字类型数据

c.       REGEXP_INSTR

SELECT REGEXP_INSTR('Joe Smith,10045 Berry Lane,San Joseph,

CA 91234','[[:digit:]]{4}$') AS rx_instr FROM dual; --44

SELECT REGEXP_INSTR('JoeSmith,10045BerryLane,SanJoseph,

      CA91234','[[:digit:]]{3}') AS rx_instr FROM dual; --10

d.      REGEXP_REPLACE

SELECT REGEXP_REPLACE('Ellen Hildi Smith',

'(.*) (.*) (.*)', '/3, /1 /2') FROM dual; -- Smith, Ellen Hildi

sELECT REGEXP_REPLACE('Ellen Hildi Smith oowow',

'(.*) (.*) (.*) (.*)', '/3, /1 /2 /3 /4') FROM dual; -- Smith, Ellen Hildi Smith oowow

2.     表达式规则说明

Oracle 10g支持正则表达式的四个新函数分别是:REGEXP_LIKEREGEXP_INSTRREGEXP_SUBSTR、和REGEXP_REPLACE

特殊字符:
'^'
匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合。
'$'
匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 'n' 'r'
'.'
匹配除换行符 n之外的任何单字符。
'?'
匹配前面的子表达式零次或一次。
'*'
匹配前面的子表达式零次或多次。
'+'
匹配前面的子表达式一次或多次。
'( )'
标记一个子表达式的开始和结束位置。
'[]'
标记一个中括号表达式。
'{m,n}'
一个精确地出现次数范围,m=<出现次数<=n'{m}'表示出现m次,'{m,}'表示至少出现m次。
'|'
指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的字符串。
num
匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。
正则表达式的一个很有用的特点是可以保存子表达式以后使用, 被称为Backreferencing. 允许复杂的替换能力
如调整一个模式到新的位置或者指示被代替的字符或者单词的位置. 被匹配的子表达式存储在临时缓冲区中,
缓冲区从左到右编号, 通过数字符号访问。

字符簇:
[[:alpha:]]
任何字母。
[[:digit:]]
任何数字。
[[:alnum:]]
任何字母和数字。
[[:space:]]
任何白字符。
[[:upper:]]
任何大写字母。
[[:lower:]]
任何小写字母。
[[:punct:]]
任何标点符号。
[[:xdigit:]]
任何16进制的数字,相当于[0-9a-fA-F]

各种操作符的运算优先级
转义符
(), (?:), (?=), [] 圆括号和方括号
*, +, ?, {n}, {n,}, {n,m}
限定符
^, $, anymetacharacter
位置和顺序
| “
操作

###版权-----found2008 ------邮箱:[email protected]

你可能感兴趣的:(oracle,正则表达式,存储,oracle10g)