如何在不替换 SQL 中现有的双反斜杠的情况下用双反斜杠替换反斜杠

How to replace a backslash with a double backslash without replacing existing double backslashes in SQL

我从外部来源获得了一个我无法控制的路径,需要将文件路径存储在我的 SQL 服务器数据库中。

文件路径将如下所示;

C:\Users\Temp\filepath\test\document.txt

我需要用所有双反斜杠存储这些

C:\Users\Temp\filepath\test\document.txt

\ 替换 \ 而不将字符串变成这样的正确方法是什么

C:\\Users\\Temp\filepath\test\document.txt

有一个 REPLACE 电话?

这是 Gordon Linoff 前段时间展示的一个简单技巧。 (想不起来原​​来的了post)

它将处理任意数量的重复字符。在这种情况下 \

简而言之,就是扩容、剔除、归一化。

例子

Declare @S varchar(150) = 'C:\Users\Temp\filepath\test\document.txt'

Select replace(replace(replace(@S,'\','†‡'),'‡†',''),'†‡','\')

结果

C:\Users\Temp\filepath\test\document.txt

您可以将双精度转换为单精度,然后将单精度转换为双精度。

DECLARE @Path VARCHAR(100) = 'C:\Users\Temp\filepath\test\document.txt'
SELECT Replace(Replace(@Path, '\', '\'), '\', '\')