7

如何对 Oracle 中的值进行 url 解码?

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

4

2 回答 2

5

Oracle 提供了utl_url包,其中包含两个函数escape()unescape() 允许您对urls 进行编码和解码。例如,要解码编码的 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
于 2013-08-27T11:59:10.523 回答
1

这对我有用:

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

于 2021-07-06T06:29:20.727 回答