如何用双反斜杠替换反斜杠而不替换 SQL 中现有的双反斜杠

Jam*_*ton 2 sql t-sql sql-server replace

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

文件路径将类似于以下内容;

C:\\Users\\Temp\filepath\test\document.txt
Run Code Online (Sandbox Code Playgroud)

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

C:\\Users\\Temp\\filepath\\test\\document.txt
Run Code Online (Sandbox Code Playgroud)

在不将字符串变成这样的情况下\替换为的正确方法是什么\\

C:\\\\Users\\\\Temp\\filepath\\test\\document.txt
Run Code Online (Sandbox Code Playgroud)

打电话REPLACE

Joh*_*tti 7

这是戈登·利诺夫(Gordon Linoff)不久前演示的一个简单技术。(记不起原帖了)

\n

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

\n

简而言之,它是扩张、消除并最终正常化。

\n

例子

\n
Declare @S varchar(150) = 'C:\\\\Users\\\\Temp\\filepath\\test\\document.txt'\n\nSelect replace(replace(replace(@S,'\\','\xe2\x80\xa0\xe2\x80\xa1'),'\xe2\x80\xa1\xe2\x80\xa0',''),'\xe2\x80\xa0\xe2\x80\xa1','\\\\')\n
Run Code Online (Sandbox Code Playgroud)\n

结果

\n
C:\\\\Users\\\\Temp\\\\filepath\\\\test\\\\document.txt\n
Run Code Online (Sandbox Code Playgroud)\n