使用子字符串更新/替换 - 三个反斜杠

时间:2017-06-08 12:34:51

标签: sql sql-server-2012

我有一个满了重复文件路径的列:

\\C:\298788\DOC1\SUB1\\\C:\298788\DOC1\SUB1\FILE.txt
\\C:\298788\DOC1\SUB1\\\C:\298788\DOC1\SUB1\FILE.txt
\\C:\298788\DOC1\SUB1\\\C:\298788\DOC1\SUB1\FILE.txt

我只需要字符串的第二部分即。 C:\298788\DOC1\SUB1\FILE.txt

如何在没有任何东西的情况下更换三重反斜杠。我试过了:

UPDATE [TABLE].[dbo].[ColumnName]
SET [ColumnName] = REPLACE([ColumnName], '%\\\', '');

它表示所有行都已更新,但没有任何变化。假设它与反斜杠有关。

使用SQL SERVER 2012。

1 个答案:

答案 0 :(得分:1)

使用stuff()

select col = stuff(col,1,charindex('\\\',col,2)+2,'')
from tbl

rextester演示:http://rextester.com/QRKWP8606

返回:

+------------------------------+
|             col              |
+------------------------------+
| C:\298788\DOC1\SUB1\FILE.txt |
| C:\298788\DOC1\SUB1\FILE.txt |
| C:\298788\DOC1\SUB1\FILE.txt |
+------------------------------+

作为update

update tbl
  set col = stuff(col,1,charindex('\\\',col,2)+2,'')
where charindex('\\\',col,2)>0