URL解码表中的一列

问题描述:

如何在Oracle中解码值?URL解码表中的一列

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

Oracle提供的utl_url包含两个函数escape()unescape(),允许您对url进行编码和解码。为了解码编码的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