如果我不知道下面的数字是什么,如何替换此字符串示例中的 $SV### 值? 或者甚至只是将1234544放入另一个字符串变量中。
我试过这个,但它不能取代任何东西:
declare @string varchar(100) = 'F4 Obstructed reach beyond. [$SV1234544" provided.]'
SELECT REPLACE(@string,PATINDEX('%$SV[0-9+]%',@string),'test')
谢谢!
下面的代码将期望数字始终以"$SV"为前缀。它经过一系列迭代以找到"$SV"之后的数值,然后将"$SV"和数字替换为您想要替换的任何文本。此代码使用子字符串、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')