我的Oracle 11g表中有以下字符串:
ABCDEF000xyz12345abcdefgh
GHIJK0000def67890abcdefgh
即,字符串以大写字母开头,后跟一系列零,后跟三个字符,数字和字符。
如何使用Oracle中的REGEXP_REPLACE将xyz12345abcdefgh
和def67890abcdefgh
替换为某个字符串?
答案 0 :(得分:1)
select regexp_replace(column_name,'(.*)([0]{2,})(.*)','\1\2xxxx') from table_name;
答案 1 :(得分:1)
如果您只需要选择所提及类型的记录,请考虑使用
select REGEXP_REPLACE(col, '^([[:upper:]]+0+)[[:alpha:]]{3}\d+[[:alpha:]]+$', '\1NEW_STRING')
,其中
^
- 字符串的开头([[:upper:]]+0+)
- 捕获第1组匹配:
[[:upper:]]+
- 一个或多个大写字母0+
- 一个或多个0
字符[[:alpha:]]{3}
- 3个字母字符\d+
- 一位或多位[[:alpha:]]+
- 1个或多个字母字符$
- 字符串结束。替换字符串中的\1
是反向引用,它插入存储在捕获组#1缓冲区中的值。
请参阅online demo。