Sql CHARINDEX跳过评论
我正在尝试使用STUFF w/CHARINDEX来更新字符串的特定部分。我正在定位“@recipients”标签并在末尾添加另一封电子邮件。它似乎工作正常expect on字符串有一个'-@recipients'和一个'@recipients',并且它一直添加到注释部分。有没有办法跳过注释部分,将其插入正确的位置 这是我当前的代码Sql CHARINDEX跳过评论,sql,Sql,我正在尝试使用STUFF w/CHARINDEX来更新字符串的特定部分。我正在定位“@recipients”标签并在末尾添加另一封电子邮件。它似乎工作正常expect on字符串有一个'-@recipients'和一个'@recipients',并且它一直添加到注释部分。有没有办法跳过注释部分,将其插入正确的位置 这是我当前的代码 STUFF(sjs.command, (CHARINDEX(',', sjs.command, CHARINDEX('@recipients', sjs.comma
STUFF(sjs.command, (CHARINDEX(',', sjs.command, CHARINDEX('@recipients',
sjs.command)) - 1), 1, ';alerts@companyname.com''')
如果@recipients前面有空格或其他字符,则可以跳过--@recipients。然后,您可以修改您的内容以检查“@recipients”,如下所示
STUFF(sjs.command, (CHARINDEX(',', sjs.command, CHARINDEX(' @recipients',
sjs.command)) - 1), 1, ';alerts@companyname.com''')
这将删除
--recipients
和以下@
之间的所有内容。用下面的选择替换sjs.command
(将@test
替换为sjs.command
)
如果在真正的
@recipients
之前有一个一致的空格或字符,那么我更喜欢PriyankJ的答案。sjs.command中有什么?sjs.command只是一个带有profile_name、recipients、subject的长字符串。基本上是一组生成的电子邮件字段@普里扬基
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)