如何在特定字符之前替换字符串的子字符串?

时间:2012-09-11 14:11:34

标签: sql tsql replace substring

Email

值:

josh@yahoo.com
carmine32@hotmail.com
zehmaneh@yahoo.com

我想用@替换test之前的字符串。

结果:

test@yahoo.com
test@hotmail.com
test@yahoo.com

如何根据字符串中的字符使用子字符串和替换?

4 个答案:

答案 0 :(得分:6)

您甚至不需要使用substringreplace,您可以使用此功能:

SELECT 'test' + RIGHT(email, charindex('@', REVERSE(email)))
FROM YourTable

你可以用这个来测试它:

DECLARE @email nvarchar(50)
SET @email = 'carmine32@hotmail.com'
PRINT 'test' + RIGHT(@email, charindex('@', REVERSE(@email)))

答案 1 :(得分:3)

declare @t table(email varchar(30))
insert @t values('josh@yahoo.com'),
                ('carmine32@hotmail.com'),
                ('zehmaneh@yahoo.com') 

select stuff(email, 1, charindex('@', email), 'Test@') 
from @t

结果:

Test@yahoo.com
Test@hotmail.com
Test@yahoo.com

答案 2 :(得分:2)

您可以使用SUBSTRINGCHARINDEX

UPDATE Email set email = 
    'test' + SUBSTRING(email, CHARINDEX('@',email), LEN(email))

小提琴:http://sqlfiddle.com/#!3/0face/6/0

答案 3 :(得分:1)

你可以

select 'test' + substring(fld, charindex('@', fld), len(fld))