从SQL返回时,我有一个非常具体的业务要求来隐藏电子邮件地址中的某些字符,而我已经达到了使用SQL的能力极限。我想知道外面是否有人可以指出正确的方向。本质上,我的业务要求以下内容:
test@email.com成为t*\*t@e**l.com 或
test@email.com
t*\*t@e**l.com
thislong@emailaddress.com 成为 t******h@e**********s.com
thislong@emailaddress.com
t******h@e**********s.com
我知道,如果电子邮件中@之前或之后的任何部分少于3个字符,则此操作将无效,但我打算对此进行检查并进行适当处理。我尝试了SUBSTRING,STUFF,LEFT / RIGHT等的混合,但是我不太明白。
生成通用解决方案非常有趣且非常困难,请尝试以下操作
这可能对您有帮助
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