您可以拆分域名和名称,然后在名称上应用REGEXP_REPLACE 或TRANSLATE。
另一种选择是使用INSTR 和SUBSTR
SQL Fiddle
Oracle 11g R2 架构设置:
create table yourtable as
select 'pattybeads@mydomain.com' emailid FROM DUAL UNION ALL
select 'patty.beads@mydomain.com' FROM DUAL UNION ALL
select 'patty.beads+something@mydomain.com' FROM DUAL
查询 1:
select TRANSLATE (name, 'a.+', 'a' ) ||domain emailid
FROM
( SELECT
REGEXP_SUBSTR ( emailid, '(.+@)(.+)' ,1,1,NULL,1) name,
REGEXP_SUBSTR ( emailid, '(.+)@(.+)' ,1,1,NULL,2) domain
FROM yourtable
)
Results:
| EMAILID |
|----------------------------------|
| pattybeads@mydomain.com |
| pattybeads@mydomain.com |
| pattybeadssomething@mydomain.com |
查询 2:
select TRANSLATE ( SUBSTR (emailid,1,INSTR( emailid,'@' ) -1 ) ,
'a.+', 'a' )||
SUBSTR (emailid,INSTR( emailid,'@' ) ) emailid
FROM yourtable
Results:
| EMAILID |
|----------------------------------|
| pattybeads@mydomain.com |
| pattybeads@mydomain.com |
| pattybeadssomething@mydomain.com |