Я думаю, вам нужно будет включить функцию PATINDEX и создать шаблон, используя ваши начальные и конечные идентификаторы. Это будет удовлетворять условию, когда присутствуют как начальный, так и конечный идентификаторы ...
DECLARE @OldString nvarchar(max)
DECLARE @NewString nvarchar(max)
DECLARE @StartLocation bigint
DECLARE @Pattern nvarchar(200) = '%' + @StartIdentifier + ' % ' + @EndIdentifer + '%'
SELECT @StartLocation = PATINDEX(@Pattern, 'old complete string')
Если шаблон расположен, то вы можете получить заменяемую строку путем подстроки «старой полной строки», начиная с позиции (@StartLocation + Length of @StartIdentifier + 1). Чтобы определить длину для SUBSTRING, вам нужно найти позицию @EndIdentifier, используя CHARINDEX старой полной строки, начинающейся с (@StartLocation + Length of @StartIdentifier + 1). Вычтите (@StartLocation + длина StartIdentifier + 1) из результата CHARINDEX.
SELECT @OldString = SUBSTRING('complete old string', @StartLocation + LEN(@StartIdentifier) + 1, CHARINDEX(' ' + @EndIdentifier, 'old complete string', @StartLocation + LEN(@StartIdentifier) + 1) - (@StartLocation + LEN(@StartIdentifier) + 1)))
Вы можете сделать прямую замену, чтобы получить новую строку.
SELECT @NewCompleteString = REPLACE('old complete string', @OldString, @NewString)
"Если нет идентификатора терминатора, мне нужен конец
строка, которая будет считаться одной. "
Если исходный шаблон не был найден, мы возвращаемся к поиску только @StartIdentifier. Для этого вы можете сбросить шаблон, чтобы он содержал только @StartIdentifier ...
SELECT @Pattern = '%' + @StartIdentifier + ' %'
SELECT @StartLocation = PATINDEX(@Pattern, 'old complete string')
Если шаблон расположен, вы можете заменить старую строку на SUBSTRING, начиная с (@StartLocation + Length of @StartIdentifier + 1), с длиной длины 'старой полной строки' - (@StartLocation + Length of @StartIdentifier + 1) ...
SELECT @OldString = SUBSTRING('old complete string', @StartLocation + LEN(@StartIdentifier) + 1, LEN('old complete string') - (@StartLocation + LEN(@StartIdentifier) + 1))
Затем вы можете заменить ...
SELECT @NewCompleteString = REPLACE('old complete string', @OldString, @NewString)