函数定义
Regexp_Substr(String,pattern,position,occurrence ,modifier )
String:操作的字符串;
pattern:正则表达式匹配规则,匹配到则返回;
position:开始匹配的位置,默认当然是1;
occurrence:标识第几个匹配组,默认为1
modifier:模式(‘i‘不区分大小写进行检索,‘c‘区分大小写进行检索。默认为‘c‘)
select regexp_substr(‘2001,2002,200103,2005’,’[^,]+’,1,3) from dual
返回的结果就是:200103
返回的是’2001,2002,200103,2005’ 这个字符串被’,'截取拆分后的第三个字符串。
返回多行
需要返回多行,可以采用oracle的connect by 命令,行数的获得通过length来获得。
select regexp_substr(‘2001,2002,200103,2005’, ‘[^,]+’, 1, level, ‘i’) as str
from dual
connect by level <=
length(‘2001,2002,200103,2005’) -
length(regexp_replace(‘2001,2002,200103,2005’, ‘,’, ‘’)) + 1;
计算有几个分隔符后加1得到需要分几组:
length(‘2001,2002,200103,2005’) -
length(regexp_replace(‘2001,2002,200103,2005’, ‘,’, ‘’)) + 1;
函数中的第四个参数level分别取不同的组,第五个参数i代表不区分大小写
regexp_substr(‘2001,2002,200103,2005’, ‘[^,]+’, 1, level, ‘i’)