TSQL - 在符号前替换字符串

时间:2016-10-18 11:23:46

标签: sql-server tsql replace str-replace

我有一个表存储在sql server上的文件的表。我需要在最后一个反斜杠之前替换路径:

  

C:\ Users \ APP \ AppData \ Local \ Temp \ test \ abc deg.pdf

例如:

  

\ app \ pp \ abc deg.pdf

编辑:该表包含许多内容 - 我需要遍历整个表格并更改所有内容。

4 个答案:

答案 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)

  1. 反转输入字符串(使用REVERSE)并找到第一个反斜杠的索引(使用CHARINDEX)。
  2. 将左侧部分向上移动到该索引(使用LEFT)并使用替换字符串的反向连接(使用+运算符)。
  3. 然后反过来得到你的最终结果。

答案 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语句之前进行测试。我没有在这里指定过滤器