REGEXP_REPLACE¶
说明¶
根据一定规则替换字符串中的数据
参数¶
source_char
源字符串 字符类型
pattern
正则表达式模式
replace_string
要替换的字符串
position
原字符串的起始位置
occurrence
从第几个开始匹配
match_param
要替换字符串方式的支持
i:大小写不敏感;
c:大小写敏感;
n:点号 . 不匹配换行符号;
m:多行模式;
x:扩展模式,忽略正则表达式中的空白字符;
u: 使用unicode字符集。
返回值¶
根据规则替换之后的字符串
示例¶
根据正则表达式规则进行替换
-- 清理环境
DROP TABLE test_regexp_replace CASCADE;
--创建表
create table test_regexp_replace
(
id varchar(4),
value varchar(20)
);
--数据插入
insert into test_regexp_replace values('1','213-555-022311');
insert into test_regexp_replace values('2','213-555-022411');
insert into test_regexp_replace values('3','213-555-022511');
insert into test_regexp_replace values('4','213-555-022611');
insert into test_regexp_replace values('5',convert_encoding_using('你好世界', 'utf8'));
--使用REGEXP_REPLACE 把前3 个数字放在圆括号内,同时省略第一个‘-’符号。为此,
--我们将第1 个数字集称为 \1,第2 个数据集称为 \2,第3 个数据集称为\3
select REGEXP_REPLACE (value, '([[:digit:]]{3})-([[:digit:]]{3})-([[:digit:]]{4})' , '(\1) \2-\3' )
"REGEXP_REPLACE" from test_regexp_replace where id < 5;
REGEXP_REPLACE(text) |
--------------------------
(213) 555-022311 |
--------------------------
(213) 555-022411 |
--------------------------
(213) 555-022511 |
--------------------------
(213) 555-022611 |
总数目:4
--修改value子串中以 utf8 编码保存的中文字符串。
select REGEXP_REPLACE(value,'[\x{4e00}-\x{9fa5}]+',convert_encoding_using('世界你好', 'utf8'),1,1,'u') from test_regexp_replace where id = 5;
REGEXP_REPLACE(text) |
--------------------------
世界你好 |
总数目:1
-- 删除表
DROP TABLE test_regexp_replace;