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

Sql 如何在特定字符之前替换字符串的子字符串?,sql,tsql,replace,substring,Sql,Tsql,Replace,Substring,表电子邮件: 价值观: josh@yahoo.com carmine32@hotmail.com zehmaneh@yahoo.com 我想用test替换@之前的字符串 结果: test@yahoo.com test@hotmail.com test@yahoo.com Test@yahoo.com Test@hotmail.com Test@yahoo.com 如何根据字符串中的字符使用子字符串和替换?您甚至不需要使用子字符串或替换,您可以使用以下方法: SELECT 'test' +

电子邮件

价值观:

josh@yahoo.com
carmine32@hotmail.com
zehmaneh@yahoo.com
我想用
test
替换
@
之前的字符串

结果:

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

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

您甚至不需要使用
子字符串
替换
,您可以使用以下方法:

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)))
你可以

select 'test' + substring(fld, charindex('@', fld), len(fld))
您可以使用和:

小提琴:

结果:

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

您是否使用任何服务器端语言?@Testifier您是否尝试了所有解决方案?REVERSE是TSQL中性能较差的字符串函数之一。我将其与LEFT一起用于删除字符串末尾的任何尾随空格。它工作得很好。甚至像“this”这样的字符串也返回“this”。谢谢你的解决方案。