需要PostgreSQL查询以替换第3个字符后的字符串直到特定符号

oyjwcjzk  于 2023-08-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(128)

我写了一个查询,以取代所有的电子邮件与选择查询,后第三个字符串应替换为******高达@符号和休息将是因为它是。
对于例如。
输入:

abcdefghijk@gmail.com

字符串
输出量:

abc*****@gmail.com


我试过:

select REGEXP_REPLACE(email, '(.{3})(?!$)', '\1*****') from user


但这给予了我输出:

abc*****defghijk@gmail.com

fcwjkofz

fcwjkofz1#

请尝试以下操作:

select replace('abcdefghijk@gmail.com',substring('abcdefghijk@gmail.com',4,strpos('abcdefghijk@gmail.com','@')-4),'*****') 
union
select replace('xyzabc@aol.com',substring('xyzabc@aol.com',4,strpos('xyzabc@aol.com','@')-4),'*****')
union
select replace('johnnik@icloud.com',substring('johnnik@icloud.com',4,strpos('johnnik@icloud.com','@')-4),'*****');

字符串

编辑:得到评论后,查询改为:

select replace('test@gmail.com',substring('test@gmail.com',4,strpos('test@gmail.com','@')-3),'*****@');

相关问题