#REGEXP_REPLACE
REGEXP_REPLACE为正则表达式函数,其功能与REPLACE函数相似,但REGEXP_REPLACE函数的regexp参数可使用正则表达式,对expr表示的字符串进行正则匹配,返回匹配成功且匹配部分被replace替代后的VARCHAR类型字符串。
expr
expr的值须为字符型,或可转换为字符型的其他类型。
当expr的值为NULL时,函数返回NULL。
expr不支持32000字节以上的XMLTYPE、LOB类型数据。
函数使用输入字符集定义的字符计算字符串(仅支持UTF-8)。
函数返回结果字符串长度超过上限(32000)时,返回replace字符串。
regexp
RegExp,长度不超过512字节,可为NULL,此时函数返回expr。
replace
用于替代的字符串,replace为与expr相同的通用表达式,须为字符型,或可转换为字符型的其他类型。
position
指定开始进行匹配的偏移量,系统从expr的第position个字符开始匹配,在找到第一个正则匹配项后,继续从匹配项之后的第一个字符开始,查找第二个匹配项,直到expr的最后一个字符。
position为与expr相同的通用表达式,须为数值型数据,或可转换为NUMBER类型的其他类型数据,且其值应为一个正整数,内部处理时统一转换为BIGINT类型。
- 当position为NULL时,函数返回NULL。
- 当position为0或负数时,函数返回Out of range错误。
- 当position为小数时,截断保留整数作为position值。
- 当position超出expr值的长度时,不执行匹配,函数返回expr值。
- 未指定此值时,默认从第一个字符开始匹配。
occurrence
指定按regexp在expr中第occurrence次匹配到的子字符串执行替代,occurrence为与expr相同的通用表达式,须为数值型数据,或可转换为NUMBER类型的其他类型数据。且其值应为一个负整数,内部处理时统一转换为BIGINT类型。
- 当occurrence为NULL时,函数返回NULL。
- 当occurrence为0时,替换所有匹配项。
- 当occurrence为负数时,函数返回Out of range错误。
- 当occurrence为小数时,截断保留整数作为occurrence值。
- 当occurrence超出匹配次数时,不执行匹配,函数返回expr值。
- 未指定此值时,默认为第1次匹配。
match_para
正则匹配参数,与REGEXP_LIKE中的含义相同。
示例
SELECT REGEXP_REPLACE('1234567890', '456','!', 1, 1,'i') "REGEXP_REPLACE" FROM DUAL;
REGEXP_REPLACE
--------------
123!7890
SELECT REGEXP_REPLACE('1234567890', '[0-9]','!', 1, 5) "REGEXP_REPLACE" FROM DUAL;
REGEXP_REPLACE
--------------
1234!67890
SELECT REGEXP_REPLACE(DHQ,'h','H',1,0,'i') "REGEXP_REPLACE"
FROM area
WHERE area_no='01';
REGEXP_REPLACE
------------------
SHangHai
Copied!