URL解码表中的列

时间:2013-08-27 11:22:40

标签: oracle urldecode

如何在Oracle中对URL进行url解码?

我有一个存储在oracle DB表中的URL编码字符串。我想在选择结果时对其进行url_encode。有什么快速的方法来实现这个目标吗?

2 个答案:

答案 0 :(得分:4)

Oracle提供utl_url包,其中包含两个函数escape()unescape(),允许您对url进行编码和解码。例如,要解码编码的网址字符串http://www.%24-%26-%3C-%3E-%3F,我们可以执行以下操作:

SQL> select utl_url.unescape('http://www.%24-%26-%3C-%3E-%3F') as res
  2   from dual
  3  ;

结果:

RES
---------------------
http://www.$-&-<->-?

请注意。如果需要使用escape()函数,则无法直接在select语句中使用它,因为函数的第二个参数是布尔数据类型。您需要编写包装函数。

SQL> create or replace function url_encode(p_url in varchar2)
  2  return varchar2
  3  is
  4  begin
  5    return utl_url.escape(p_url, true);
  6  end;
  7  /
Function created

SQL> 
SQL> select Url_encode('http://www.$-&-<->-?') as res
  2   from dual
  3  ;

结果:

RES
-------------------------------------
http%3A%2F%2Fwww.%24-%26-%3C-%3E-%3F

答案 1 :(得分:0)

这对我有用:

utl_url.unescape(replace('你的文字在这里', '+', ' '),'UTF-8')