CHARINDEX跳过评论

时间:2018-08-06 16:18:21

标签: sql

我正在尝试使用带CHARINDEX的STUFF来更新字符串的特定部分。我在查找'@recipients'标签,并在末尾添加了另一封电子邮件。期望字符串上有一个'-@ recipients'和'@recipients'似乎工作正常,并且一直添加到注释部分。有没有一种方法可以跳过注释的部分以将其插入正确的位置?

这是我当前的代码。

STUFF(sjs.command, (CHARINDEX(',', sjs.command, CHARINDEX('@recipients', 
sjs.command)) - 1), 1, ';alerts@companyname.com''') 

2 个答案:

答案 0 :(得分:1)

如果@recipients前面有空格或其他字符,则可以跳过-@ recipients。然后,您可以修改您的STUFF来检查“ @recipients”,如下所示。

STUFF(sjs.command, (CHARINDEX(',', sjs.command, CHARINDEX(' @recipients', 
sjs.command)) - 1), 1, ';alerts@companyname.com''')

答案 1 :(得分:0)

这将删除--recipients和随后的@之间的所有内容。将sjs.command替换为以下选择(将@test替换为sjs.command

DECLARE @test varchar(max) = '@body=''blah'',--@recipients=''remove'',@recipients=''blah.com'',@subject=''blah'''

SELECT LEFT(@test, CHARINDEX('--@recipients', @test) -1) + RIGHT(@test, LEN(@test) - CHARINDEX('--@recipients', @test) - CHARINDEX('@', SUBSTRING(@test, CHARINDEX('--@recipients', @test) + 3, LEN(@test)))-1)

如果在真@recipients前面有一致的空格或字符,我会更喜欢PriyankJ的答案。