我的表中有一个col,如:
COL
Kiyara@ymail.com
Akira@zmail.com
我希望我的输出像这样:
COL
Kxxxxx@ymail.com
Axxxx@zmail.com
iyara
替换为5x(xxxxx)和' kira' 4x' s(xxxx)
答案 0 :(得分:4)
这可能是一种更好的方法,但这可以实现你所追求的目标:
DECLARE @email NVARCHAR(50) = 'Kiyara@ymail.com';
SELECT LEFT(@email, 1) + REPLICATE('X',
LEN(SUBSTRING(@email, 2,
CHARINDEX('@', @email) - 1)))
+ SUBSTRING(@email, CHARINDEX('@', @email), LEN(@email));
-- Result: KXXXXXX@ymail.com
这使用 REPLICATE() 方法,根据在线文档从SQL Server 2008开始。
REPLICATE(Transact-SQL)
重复指定次数的字符串值。
REPLICATE ( string_expression ,integer_expression )
答案 1 :(得分:1)
SELECT LEFT(col, 1) + RIGHT('xxxxxxxxxxxxxxxx', CHARINDEX('@', col) - 2) +
SUBSTRING(col, CHARINDEX('@', col), LEN(col) - CHARINDEX('@', col) + 1);
<强>解释强>
以Kiyara@ymail.com
为例,此处显示我的每条查询。
K LEFT(col, 1)
xxxxx RIGHT('xxxxxxxxxxxxxxxx', CHARINDEX('@', col) - 2)
@ymail.com SUBSTRING(col, CHARINDEX('@', col), LEN(col) - CHARINDEX('@', col) + 1)
请注意,您可以将RIGHT()
的号码替换为x
字符串,其长度足以与您预期的最长电子邮件名称相匹配。
答案 2 :(得分:0)
试试吧
select substring('Akira@zmail.com',1,1) + REPLICATE('x',charindex('@','Akira@zmail.com')) + SUBSTRING('Akira@zmail.com',charindex('@','Akira@zmail.com'),200)
按列或任何您想要的内容更改电子邮件
答案 3 :(得分:0)
declare @n nvarchar(max)
set @n='Kiyara@ymail.com'
select concat(substring(@n,1,1),replicate('X',len( substring(@n,2,charindex('@',@n,1)-2))),SUBSTRING(@n,charindex('@',@n),200))
在这个帮助o子字符串中你找到第一个字母ans然后其余的字母直到@ ie iyara使用charindex ans substring搜索,它将使用复制函数转换为'x',然后打印其余的id。 / p>