我想替换字符串的最后一个匹配子串
示例
DECLARE @string NVARCHAR(MAX)= 'Greeting<br><br>As many offices move to remote work. <br><br>Have a good day<br><br>'
SELECT REPLACE(@string,'<br><br>','')
结果需要
@string = 'Greeting<br><br>As many offices move to remote work. <br><br>Have a good day'
需要用空替换最后两个
答案 0 :(得分:0)
如果性能不成问题,您可以尝试反转字符串,然后将第一部分切掉并反转回来
DECLARE @string NVARCHAR(MAX)= 'Greeting<br><br>As many offices move to remote work. <br><br>Have a good day<br><br>'
declare @pat nvarchar(max) = (select REVERSE('<br><br>'))
declare @rsv nvarchar(max) = (select REVERSE(@string))
declare @idx int = (select CHARINDEX(@pat, @rsv, 0))
declare @result nvarchar(max) = (select left(@rsv, @idx - 1) + right(@rsv, len(@rsv) - @idx - LEN(@pat) + 1))
set @result = reverse(@result)
print @result
结果是:
Greeting<br><br>As many offices move to remote work. <br><br>Have a good day
您可以缩短代码。我只是把它写得很详细,所以逻辑会很清楚。
答案 1 :(得分:0)
如果它总是在最后,另一种更简单的方法是在字符串中添加一个特殊字符,然后替换它。
select @string=Replace(@string+'~','<br><br>~','')