Заменить шаблон на значение - PullRequest
0 голосов
/ 03 февраля 2020

Как заменить значение $ SV ### в этом примере строки, если я не знаю, какими будут следующие числа? Или даже просто поместите 1234544 в другую строковую переменную.

Я пробовал это, но это ничего не заменяет:

      declare @string varchar(100) = 'F4 Obstructed reach beyond.  [$SV1234544" provided.]'
      SELECT REPLACE(@string,PATINDEX('%$SV[0-9+]%',@string),'test')

Спасибо!

1 Ответ

0 голосов
/ 19 февраля 2020

Приведенный ниже код будет работать с ожиданием того, что число всегда будет иметь префикс «$ SV». Он проходит серию итераций, чтобы найти значение цифры c после "$ SV", а затем заменяет "$ SV" и цифру c на любой текст, которым вы хотите заменить. Этот код использует функции substring, patindex, concat и replace.

DECLARE @string varchar(100) = 'F4 Obstructed reach beyond.  [$SV1234544" provided.]'
DECLARE @SubString Varchar(100) = SUBSTRING(@string, PATINDEX('%$SV[0-9]%', @string), LEN(@string))
SELECT REPLACE(@string,CONCAT('$SV',LEFT(SUBSTRING(@SubString, PATINDEX('%[0-9.-]%', @SubString), 8000),PATINDEX('%[^0-9.-]%', SUBSTRING(@SubString, PATINDEX('%[0-9.-]%', @SubString), 8000) + 'X') -1)),'test') 
...