在SQL查询中用'*'替换电子邮件地址中的某些字符

时间:2013-12-19 11:34:38

标签: sql sql-server sql-server-2008

来自example@gmail.com

exam***@gm***.com

任何人都可以使用SQL查询屏蔽电子邮件。上面显示example@gmail.com并将其转换为

exam***@gm***.com

3 个答案:

答案 0 :(得分:3)

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

SELECT  LEFT(@String, 3) + '*****@' 
        + REVERSE(LEFT(RIGHT(REVERSE(@String) , CHARINDEX('@', @String) +2), 2))
        + '******'
        + RIGHT(@String, 4)

<强>结果

exa*****@gm******.com

想到另一个更简单的解决方案

SELECT LEFT(@String, 3) + '*****@' 
       + SUBSTRING(@String, CHARINDEX('@',@String)+1,2)
       + '*******'
       + RIGHT(@String, 4) 

这也会给你完全相同的结果。

答案 1 :(得分:1)

插入时你可以用c#代码做同样的事情。 尝试使用其他示例,

Declare @input varchar(50)='example@gmail.com '

select left(@input,4)+replicate('*',len(substring(@input,5,charindex('@',@input)-5)))
+substring(@input,charindex('@',@input),3)
+replicate('*',len(substring(@input,charindex('@',@input)+3,len(@input)-charindex('.',@input))))
+substring(@input,charindex('.',@input),len(@input))

答案 2 :(得分:0)

可能是一个多替换作品,另一种掩盖人声:

update table set mail = replace(replace(mail,'a','*') ,'e','*') and go on