替换斜杠并删除特定空格

时间:2015-10-11 06:03:30

标签: sql sql-server

有一些表包含数据库中的图片路径。我需要做的是替换所有现有的slasehes:\到那些:/ /每行。

接下来就是删除斜线前后每行中的空格。

例如,让我们举个例子:

  \ PicsDB\Something 2015\ Somethingbla \Some thing other\ 
    img34234.jpg

所以我们得到了:

<space><space>\<space>PicsDB\Something<space>2015\<space>Somethingbla
<space>\Some<space>thing<space>other\<space><space>img34234.jpg

应该改为:

/PicsDB/Something 2015/Some thing bla/Some thing other/img34234.jpg

P.S字符串中的注释空格必须保留。

2 个答案:

答案 0 :(得分:2)

替换反斜杠:

UPDATE my_table SET path = replace(rtrim(ltrim(path)), '\', '/');

SQL的正则表达式并不容易。如果您知道可能需要删除多少个连续空格,可以尝试:

UPDATE my_table SET path = replace(path, '    /', '/');
UPDATE my_table SET path = replace(path, '  /', '/');
UPDATE my_table SET path = replace(path, ' /', '/');

UPDATE my_table SET path = replace(path, '/    ', '/');
UPDATE my_table SET path = replace(path, '/  ', '/');
UPDATE my_table SET path = replace(path, '/ ', '/');

如图所示的6个查询将在每个斜杠之前和之后删除最多7个空格。 如果有> = 4个空格,接下来的2个空格和下一个空格,则第一个删除4个空格。这在计算上效率稍低,但比在纯SQL代码中尝试使用正则表达式更容易。

http://sqlfiddle.com/#!3/09277/3

答案 1 :(得分:2)

您可以使用LTRIM and REPLACE功能。

    select replace(ltrim(path),'\','/') from test

SQL Fiddle here