【问题标题】:How to replace a backslash with a double backslash without replacing existing double backslashes in SQL如何在不替换 SQL 中现有的双反斜杠的情况下用双反斜杠替换反斜杠
【发布时间】:2022-01-28 01:08:30
【问题描述】:

我已获得来自我无法控制的外部源的路径,并且需要将文件路径存储在我的 SQL Server 数据库中。

文件路径将如下所示;

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

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

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

用\\替换\而不把字符串变成这个的正确方法是什么

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

与REPLACE 通话?

【问题讨论】:

  • 执行另一个将 \\\\ 替换为 \\
  • 什么版本的 SQL Server?
  • 我想真正的问题是你为什么要这样做......
  • @Charlieface 我从无法控制的第三方应用程序 API 调用中得到了混乱的文件路径。他们要求我在 API 调用中用双反斜杠回应他们,否则他们的系统会崩溃?我只是旧机器上的一个齿轮

标签: sql sql-server tsql replace


【解决方案1】:

这是 Gordon Linoff 前段时间演示的一个简单技术。 (不记得原来的帖子了)

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

简而言之,它扩展、消除并最终归一化。

示例

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

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

结果

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我更喜欢 John Cappelletti 的答案,因为它可以处理任意数量的连续反斜杠。
    猜你喜欢
    • 1970-01-01
    • 2011-09-06
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多