如何在Oracle中对URL进行url解码?
我有一个存储在oracle DB表中的URL编码字符串。我想在选择结果时对其进行url_encode。有什么快速的方法来实现这个目标吗?
答案 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')