【发布时间】:2020-05-19 11:48:09
【问题描述】:
如果我不知道后面的数字是什么,如何替换此字符串示例中的 $SV### 值?或者甚至只是将 1234544 放入另一个字符串变量中。
我试过了,但它不能替代任何东西:
declare @string varchar(100) = 'F4 Obstructed reach beyond. [$SV1234544" provided.]'
SELECT REPLACE(@string,PATINDEX('%$SV[0-9+]%',@string),'test')
谢谢!
【问题讨论】:
-
您的意思是匹配 1 个或多个数字,例如
[0-9]+吗? -
是的 - 我尝试了两种方式 - 如果我把它放在 [0-9] 之外,那么它会替换它:“F4 Obstructedreach beyond. [$SV15279test3-”提供。]
-
我希望它匹配 $SV1527903
-
如果我这样做: SELECT PATINDEX('%$SV[0-9]%',@string) 它返回 31,但如果我把 + 放在那里 SELECT PATINDEX('%$SV [0-9]+%',@string) 它返回 0。
-
我通过使用 SqlRegex.dll 找到了解决方法:igormicev.com/regex-in-sql-server-for-searching-texts
标签: sql sql-server replace sql-server-2014 patindex