Oracle中正则表达式怎么用
小编给大家分享一下Oracle中正则表达式怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
Oracle使用正则表达式离不开这4个函数:regexp_like、regexp_substr、regexp_instr、regexp_replace。
regexp_like
该函数只能用于条件表达式,和 like 类似,但是使用的正则表达式进行匹配
//查询所有包含小写字母或者数字的记录。select*fromfzqwhereregexp_like(value,'^([a-z]+|[0-9]+)$');
regexp_substr
该函数和 substr 类似,用于拾取合符正则表达式描述的字符子串,该函数的定义如下
functionREGEXP_SUBSTR(String,pattern,position,occurrence,modifier)-String输入的字符串-pattern正则表达式-position标识从第几个字符开始正则表达式匹配。(默认为1)-occurrence标识第几个匹配组。(默认为1)-modifier取值范围:i:大小写不敏感;c:大小写敏感;n:点号.不匹配换行符号;m:多行模式;x:扩展模式,忽略正则表达式中的空白字符。
下面是一些实例
--检索中间的数字SELECTREGEXP_SUBSTR(a,'[0-9]+')FROMtest_reg_substrWHEREREGEXP_LIKE(a,'[0-9]+');--检索中间的数字(从第一个字母开始匹配,找第2个匹配项目)SELECTNVL(REGEXP_SUBSTR(a,'[0-9]+',1,2),'-')ASaFROMtest_reg_substrWHEREREGEXP_LIKE(a,'[0-9]+');
regexp_instr
该函数和 instr 类似,用于标定符合正则表达式的字符子串的开始位置,Oracle数据库中的REGEXP_INSTR函数的语法是
REGEXP_INSTR(source_char,pattern[,position[,occurrence[,return_option[,match_parameter]]]])-source_char搜索值的字符表达式-pattern正则表达式-position可选。搜索在字符串中的开始位置。如果省略,则默认为1,这是字符串中的第一个位置。-occurrence可选。它是模式字符串中的第n个匹配位置。如果省略,默认为1。-return_option可选指定Oracle返回的位置,0那么Oracle将返回出现的第一个字符的位置。这是默认的,1则Oracle返回字符之后发生的位置。-match_parameter取值范围:i:大小写不敏感;c:大小写敏感;n:点号.不匹配换行符号;m:多行模式;x:扩展模式,忽略正则表达式中的空白字符。
下面是一些实例
--找到字符串中的第一个”e”字的位置--返回2SELECTREGEXP_INSTR('helloitmyhome','e')FROMdual;--“1”为开始位置“2”是搜索第二个匹配的,”0”是return_option--返回出现的第一个字符位置“c”是区分大小写,所以将返回13SELECTREGEXP_INSTR('myisitMyhome','m',1,2,0,'c')FROMdual;--SELECTREGEXP_INSTR('Worldfilledwithlove','with',1,1,0,'i')FROMdual;--匹配多个备选SELECTREGEXP_INSTR('Itmyhome','a|i|o|e|u')FROMdual;
regexp_replace
该函数和 replace 类似,用于替换符合正则表达式的字符串,Oracle数据库中的REGEXP_REPLACE函数的语法是
REGEXP_REPLACE(source_char,pattern[,replace_string[,position[,occurrence[,match_parameter]]]])-source_char搜索值的字符表达式-pattern正则表达式-replace_string可选。匹配的模式将被替换replace_string字符串。如果省略replace_string参数,将删除所有匹配的模式,并返回结果字符串。-position可选。在字符串中的开始位置搜索。如果省略,则默认为1。-occurrence它是模式字符串中的第n个匹配位置。如果省略,默认为1。-match_parameteri:大小写不敏感;c:大小写敏感;n:点号.不匹配换行符号;m:多行模式;x:扩展模式,忽略正则表达式中的空白字符。
如下是一些实例
--字符串替换--luckismynetworkidSELECTREGEXP_REPLACE('itmyhomeismynetworkid','^(\S*)','luck')FROMdual;--此示例将所指定的\d数字将以#字符替换--Result:'#,#,and##arenumbersinthisexample'SELECTREGEXP_REPLACE('2,5,and10arenumbersinthisexample','\d','#')FROMdual;
以上是“Oracle中正则表达式怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。