我有一个表存储在sql server上的文件的表。我需要在最后一个反斜杠之前替换路径:
C:\ Users \ APP \ AppData \ Local \ Temp \ test \ abc deg.pdf
例如:
\ app \ pp \ abc deg.pdf
编辑:该表包含许多内容 - 我需要遍历整个表格并更改所有内容。
答案 0 :(得分:5)
您可以使用:
CHARINDEX('\', REVERSE(@str))
从结尾开始获取第一个反斜杠的索引。
对此索引使用RIGHT
,您可以在最后一个反斜杠后提取字符串并将其连接到新路径:
DECLARE @str VARCHAR(50) = 'C:\Users\APP\AppData\Local\Temp\test\abc deg.pdf'
SELECT '\app\pp' + RIGHT(@str, CHARINDEX('\', REVERSE(@str)))
答案 1 :(得分:2)
答案 2 :(得分:2)
试试这个:
declare @a varchar(max)='C:\Users\APP\AppData\Local\Temp\test\abc deg.pdf'
select REPLACE(@a,SUBSTRING(@a,1,(LEN(@a)-charindex('\',reverse(@a),1))),'\app\pp')
更新:用于更新表列值。
select REPLACE([column-name],SUBSTRING([column-name],1,(LEN([column-name])-charindex('\',reverse([column-name]),1))),'\app\pp')
FROM [Your-table]
答案 3 :(得分:1)
这是如何做到的。
UPDATE TABLE
SET PATH = REPLACE(PATH, 'C:\Users\APP\AppData\Local\Temp\test', '\app\pp')
WHERE ...
这会将'C:\Users\APP\AppData\Local\Temp\test'
替换为'\app\pp'
。或者您可以根据需要修改路径。
请在执行此UPDATE
语句之前进行测试。我没有在这里指定过滤器