将source字符串中第occurrence次匹配pattern的子串替换成指定字符串replace_string后返回结果字符串。
命令格式
string regexp_replace(string , string , string [, bigint ])
参数说明
-
source:必填。STRING类型,待替换的字符串。
-
pattern:必填。STRING类型常量或正则表达式。待匹配的模型。更多正则表达式编写规范,请参见正则表达式规范。pattern为空串时返回报错。
-
replace_string:必填。STRING类型,将匹配pattern的字符串替换后的字符串。
-
occurrence:可选。BIGINT类型常量,必须大于等于0,表示将第occurrence次匹配的字符串替换为replace_string,为0时表示替换所有匹配的子串。为其他类型或小于0时,返回报错。默认值为0。
返回值说明
返回STRING类型。返回规则如下:
-
当引用不存在的组时,不进行替换。
-
如果replace_string值为NULL且pattern有匹配,返回NULL。
-
如果replace_string值为NULL但pattern不匹配,返回原字符串。
-
source、pattern或occurrence值为NULL时,返回NULL。
使用示例
-
示例1:将
123.456.7890
字符串中与([[:digit:]]{3})\.([[:digit:]]{3})\.([[:digit:]]{4})
匹配的所有字符串替换为(\1)\2-\3
。命令示例如下。--返回(123)456-7890。 select regexp_replace('123.456.7890', '([[:digit:]]{3})\.([[:digit:]]{3})\.([[:digit:]]{4})', '(\1)\2-\3', 0);
-
示例2:将
abcd
字符串中与指定规则匹配的字符串进行替换。命令示例如下。--返回a b c d。 select regexp_replace('abcd', '(.)', '\1 ', 0); --返回a bcd。 select regexp_replace('abcd', '(.)', '\1 ', 1); --返回abcd。 select regexp_replace('abcd', '(.)', '\2', 1);
-
示例3:假设表url_set中列名为url的数据格式为
www.simple@xxx.com
,且每行的xxx
完全不同,现需要将列中www
后的所有内容都替换掉。命令示例如下。--返回结果为wwwtest。 select regexp_replace(url,'(www)(.*)','wwwtest',0) from url_set;
-
示例4:任一输入参数为NULL。命令示例如下。
--返回NULL。 select regexp_replace('abcd', '(.)', null, 0);
-
示例5:引用不存在的组。命令示例如下。
--因为pattern中只定义了一个组,引用的第二个组不存在。 --请避免这样使用,引用不存在的组的结果未定义。 regexp_replace("abcd", "(.*)(.)$", "\2", 0) = "d" --因为在pattern中没有组的定义,所以\1引用了不存在的组, --请避免这样使用,引用不存在的组的结果未定义。 regexp_replace("abcd", "a", "\1", 0) = "bcd"
相关函数
REGEXP_REPLACE函数属于字符串函数,更多查找字符串、转换字符串格式的相关函数请参见字符串函数。
内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家
阿里云企业补贴进行中: 马上申请
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠
转转请注明出处:https://www.yunxiaoer.com/158844.html