我有几个这样的路径名:
some\cool\path\1\d32a
some\cool\path\2\x3rydf
some\cool\path\3\y42d
some\cool\path\4\qasdf3
some\cool\path\5\jv5
我想用路径中的\newPath
替换路径的最后一部分,路径中包含1,2或3(不是4或5)。预期结果将是:
some\cool\path\1\newPath
some\cool\path\2\newPath
some\cool\path\3\newPath
some\cool\path\4\qasdf3
some\cool\path\5\jv5
我可以这样做:
UPDATE mytable
SET Viewsmap = [method I'm looking for]
WHERE PathName like '%1%'
OR PathName like '%2%'
OR PathName like '%3%'
但是我不知道如何更改每个字符串的最后部分,因为它不知道路径的最后部分是什么,Replace
函数似乎不是接受通配符。
答案 0 :(得分:1)
您可以使用:
LEFT (Viewsmap, LEN(Viewsmap) - CHARINDEX('\', REVERSE(Viewsmap)) + 1 )
以提取\
的最后一次出现之前的部分。
然后您可以轻松UPDATE
使用:
UPDATE mytable
SET Viewsmap = CONCAT(LEFT(Viewsmap, LEN(Viewsmap) - CHARINDEX('\', REVERSE(Viewsmap)) + 1 ),
'newPath')
WHERE PathName like '%1%'
OR PathName like '%2%'
OR PathName like '%3%'
答案 1 :(得分:1)
我认为你可以像这样使用PATINDEX
:
select
case when patindex('%\[123]\%',p) > 0 then
substring(p,1,PATINDEX('%\[123]\%',p) + 2) + 'newpath'
else p
end newP
from t;
在你的UPDATE
命令中:
update mytable
set Viewsmap = substring(PathName, 1, PATINDEX('%\[123]\%',PathName) + 2) + 'newpath'
where patindex('%\[123]\%', PathName) > 0;