一尘不染

使用SQL查询在电子邮件地址中隐藏字符

sql

从SQL返回时,我有一个非常具体的业务要求来隐藏电子邮件地址中的某些字符,而我已经达到了使用SQL的能力极限。我想知道外面是否有人可以指出正确的方向。本质上,我的业务要求以下内容:

test@email.com成为t*\*t@e**l.com

thislong@emailaddress.com 成为 t******h@e**********s.com

我知道,如果电子邮件中@之前或之后的任何部分少于3个字符,则此操作将无效,但我打算对此进行检查并进行适当处理。我尝试了SUBSTRING,STUFF,LEFT
/ RIGHT等的混合,但是我不太明白。


阅读 157

收藏
2021-05-16

共1个答案

一尘不染

生成通用解决方案非常有趣且非常困难,请尝试以下操作

这可能对您有帮助

DECLARE @String VARCHAR(100) = 'sample@gmail.com'

SELECT STUFF(STUFF(@STring,
                   CHARINDEX('@',@String)+2,
                   (CHARINDEX('.',@String, CHARINDEX('@',@String))-CHARINDEX('@',@String)-3),
                   REPLICATE('*',CHARINDEX('.',@String, CHARINDEX('@',@String))-CHARINDEX('@',@String)))
               ,2
               ,CHARINDEX('@',@String)-3
               ,REPLICATE('*',CHARINDEX('@',@String)-3))

输出将是

s****e@g******l.com

thislong@emailaddress.com的类似方法

输出将是

t******g@e*************s.com
2021-05-16