TSQL - 替换符号前的字符串
TSQL - Replace string before symbol
我有一个 table 存储 sql 服务器上文件的路径。我需要替换最后一个反斜杠之前的路径:
C:\Users\APP\AppData\Local\Temp\test\abc deg.pdf
例如:
\app\pp\abc deg.pdf
编辑:table 包含许多路径 - 我需要 运行 遍历整个 table 并更改所有路径。
这是可以做到的。
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
语句之前进行测试。我没有在这里指定过滤器
您可以使用:
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)))
试试这个:
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')
更新: 用于更新所有 table 列值。
select REPLACE([column-name],SUBSTRING([column-name],1,(LEN([column-name])-charindex('\',reverse([column-name]),1))),'\app\pp')
FROM [Your-table]
我有一个 table 存储 sql 服务器上文件的路径。我需要替换最后一个反斜杠之前的路径:
C:\Users\APP\AppData\Local\Temp\test\abc deg.pdf
例如:
\app\pp\abc deg.pdf
编辑:table 包含许多路径 - 我需要 运行 遍历整个 table 并更改所有路径。
这是可以做到的。
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
语句之前进行测试。我没有在这里指定过滤器
您可以使用:
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)))
试试这个:
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')
更新: 用于更新所有 table 列值。
select REPLACE([column-name],SUBSTRING([column-name],1,(LEN([column-name])-charindex('\',reverse([column-name]),1))),'\app\pp')
FROM [Your-table]