URL解码表中的一列

Top*_*der 5 oracle urldecode

如何在Oracle中通过URL解码值?

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

Nic*_*nov 5

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

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

结果:

RES
---------------------
http://www.$-&-<->-?
Run Code Online (Sandbox Code Playgroud)

注意。如果您需要使用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  ;
Run Code Online (Sandbox Code Playgroud)

结果:

RES
-------------------------------------
http%3A%2F%2Fwww.%24-%26-%3C-%3E-%3F
Run Code Online (Sandbox Code Playgroud)