将特定模式之间的空格替换为其他字符

时间:2013-07-02 08:50:01

标签: sql

例如,我有字符串:

<Url class="class">http://www.ccc.com/Files/thumbnails/Gone Dark.jpg</Url>

我想将url标记内的所有空格替换为%20

<Url class="class">http://www.ccc.com/Files/thumbnails/Gone%20Dark.jpg</Url>

请注意,<Url class="class">中的空格保持不变,而Gone Dark.jpg中的空格已更改为Gone%20Dark.jpg

编辑:值在SQL数据库中,我需要对它们进行编码。 REPLACE(path, strPtrn, strDst)对此不够强大(或者我认为)。

4 个答案:

答案 0 :(得分:1)

您应该使用URLEncoder类中的其他方法:URLEncoder.encode(String, String)。第一个参数是要编码的String;第二个是要使用的字符编码的名称(例如,“UTF-8”)。

你应该尝试这样的事情

String url = "http://example.com/query?q=" + URLEncoder.encode("random word £500 bank $", "ISO-8859-1"); // Or "UTF-8".

答案 1 :(得分:1)

我在1分钟内写了这篇文章,没时间考虑太多(我在工作),只是给你一个提示

http://sqlfiddle.com/#!6/d41d8/5194

declare @input nvarchar(max) = '<Url class="class">http://www.ccc.com/Files/thumbnails/Gone Dark.jpg</Url>'
declare @opentag nvarchar(256) = SUBSTRING(@input, 1, CHARINDEX('>', @input))
declare @closetag nvarchar(256) = SUBSTRING(@input, CHARINDEX('</',@input), 6)
declare @data nvarchar(max) = SUBSTRING(@input, CHARINDEX('>', @input)+1, LEN(@input)-LEN(@opentag)-LEN(@closetag))

select @opentag + REPLACE(@data, ' ', '%20') + @closetag

答案 2 :(得分:0)

如果您使用的是Java,那么您可以使用URLEncoder.encode()方法对URL进行编码,然后将其存储在数据库中。这样,空格和特殊字符将被相应处理。

答案 3 :(得分:0)

这是一个不使用变量的人 您可以一次处理表格中的所有记录

SELECT 
    LEFT(url,CHARINDEX('>',url))+
    REPLACE(SUBSTRING(url,
                      CHARINDEX('>',url)+1,
                      CHARINDEX('</',url)-CHARINDEX('>',url)-1),
            ' ', '%20') +
    RIGHT(url,LEN(url) - CHARINDEX('</',url) + 1)
  FROM t1

SQLFiddle