REGEXP_SUBSTR函数
REGEXP_SUBSTR函数
函数说明,该函数可以使用正则表达式来截取字符串
REGEXP_SUBSTR(string, pattern, [position], [occurrence], [match_param],[subexpr])
string:用来被搜索的目标字符
pattern:正则表达式内容
position:起始位置,默认值为1,即从第一个字符开始搜索
occurrence:出次数,默认为1,即第一个匹配项
match_param:针对的是正则表达式里字符大小写的匹配
【'i’不区分大小写进行检索; ‘c’区分大小写进行检索】 【默认为’c’】
subexpr :对于带有子表达式的模式,subexpr 是一个从 0 到 9 的非负整数,指示函数将返回 pattern 中的哪个子表达式
1.示例1,展示REGEXP_SUBSTR(string, pattern, [position], [occurrence])前四个参数运行效果
SELECT
NAME
,REGEXP_SUBSTR(NAME,'[0-9]+') AS a --匹配首次出现数字的字符
,REGEXP_SUBSTR(NAME,'[0-9]+',6) AS b --从第6个位置开始匹配出现数字的字符
,REGEXP_SUBSTR(NAME,'[0-9]+',1,1) AS c --匹配首次出现数字的字符
,REGEXP_SUBSTR(NAME,'[0-9]+',1,2) AS d --匹配第二次出现数字的字符
FROM EXPS
结果如下:
2、示例2,展示REGEXP_SUBSTR中[match_param]参数运行效果
SELECT
NAME
,REGEXP_SUBSTR(NAME,'(ORACLE)',1,1,'i') AS e --i不区分大小写
,REGEXP_SUBSTR(NAME,'(ORACLE)',1,1,'c') AS f --c区分大小写
,REGEXP_SUBSTR(NAME,'(oracle)',1,1,'c') AS g --c区分大小写
,REGEXP_SUBSTR(NAME,'(oracle)',1,1) AS h --默认c区分大小写
FROM EXPS
结果如下:
3、示例3,展示REGEXP_SUBSTR中[subexpr]参数运行效果;
注意:NULL,代表默认参数,即默认’c’匹配大小写
SELECT
NAME
,REGEXP_SUBSTR(NAME,'(\d+)(com+)',1,1,NULL,1) AS i --匹配首次出现数字的字符
,REGEXP_SUBSTR(NAME,'(\d+)(com+)',1,1,NULL,2) AS j --匹配首次出现[com+]的字符
,REGEXP_SUBSTR(NAME,'(\d+)(com+)',1,2,NULL,1) AS k --匹配第二次出现数字的字符
,REGEXP_SUBSTR(NAME,'(\d+)(com+)',1,2,NULL,2) AS l --匹配第二次出现[com+]的字符
FROM EXPS
结果如下: