文档介绍:Oracle正则表达式
正则表达式具有强大、便捷、高效的文本处理功能。能够添加、删除、分析、叠加、插
入和修整各种类型的文本和数据。Oracle从10g开始支持正则表达式。
下面通过一些例子来说明使用正则表达式来处理一些工作中常见的问Oracle正则表达式
正则表达式具有强大、便捷、高效的文本处理功能。能够添加、删除、分析、叠加、插
入和修整各种类型的文本和数据。Oracle从10g开始支持正则表达式。
下面通过一些例子来说明使用正则表达式来处理一些工作中常见的问题。
REGEXP_SUBSTR函数使用正则表达式来指定返回串的起点和终点,返回与source_string
字符集中的VARCHAR2或CLOB数据相同的字符串。
语法:
--,返回截取的子字符串
REGEXP_SUBSTR(srcstr,pattern[,position[,occurrence[,match_option]]])
注:
srcstr源字符串
pattern正则表达式样式
position开始匹配字符位置
occurrence匹配出现次数
match_option匹配选项(区分大小写)
SELECTregexp_substr('1PSN/231_3253/ABc','[[:alnum:]]+')FROMdual;
Output:1PSN
[[:alnum:]]+表示匹配1个或者多个字母或数字字符。
SELECTregexp_substr('1PSN/231_3253/ABc','[[:alnum:]]+',1,2)FROMdual;
Output:231
与上面一个例子相比,多了两个参数
1表示从源字符串的第一个字符开始查找匹配
2表示第2次匹配到的字符串(默认值是“1”,如上例)
selectregexp_substr('@@/231_3253/ABc','@*[[:alnum:]]+')fromdual;
Output:231
@*表示匹配0个或者多个@
[[:alnum:]]+表示匹配1个或者多个字母或数字字符
注意:需要区别“+”和“*”的区别
selectregexp_substr('1@/231_3253/ABc','@+[[:alnum:]]*')fromdual;
Output:@@+表示匹配1个或者多个@
[[:alnum:]]*表示匹配0个或者多个字母或数字字符
selectregexp_substr('1@/231_3253/ABc','@+[[:alnum:]]+')fromdual;
Output:Null
@+表示匹配1个或者多个@
[[:alnum:]]+表示匹配1个或者多个字母或数字字符
selectregexp_substr('***@1PSN/231_3253/ABc125','[[:digit:]]+$')fromdual;
Output:125
[[:digit:]]+$表示匹配1个或者多个数字结尾的字符
selectregexp_substr('***@1PSN/231_3253/ABc','[^[:digit:]]+$')fromdual;