How can I url decode a value in Oracle?
I have a URL encoded string stored in oracle DB table. I want to url_encode it while selecting the results. Any quick way to achieve this ?
Since URLs often contain characters outside the ASCII set, the URL has to be converted into a valid ASCII format. URL encoding replaces unsafe ASCII characters with a "%" followed by two hexadecimal digits. URLs cannot contain spaces. URL encoding normally replaces a space with a plus (+) sign or with %20.
To decode SharePoint URLs, you can also use Online tools like: https://www.urldecoder.org.
URL encoding converts characters that are not allowed in a URL into character-entity equivalents; URL decoding reverses the encoding. For example, when embedded in a block of text to be transmitted in a URL, the characters < and > are encoded as %3c and %3e.
Oracle provides utl_url package containing two functions escape() and unescape() which allow you encode and decode url
s. To decode an encoded url string http://www.%24-%26-%3C-%3E-%3F
, for example, we can do the following:
SQL> select utl_url.unescape('http://www.%24-%26-%3C-%3E-%3F') as res
2 from dual
3 ;
Result:
RES
---------------------
http://www.$-&-<->-?
Note. If you need to use escape()
function, you wont be able to use it in a select
statement directly, because the second parameter of the function is of Boolean datatype. You will need to write a wrapper function.
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 ;
Result:
RES
-------------------------------------
http%3A%2F%2Fwww.%24-%26-%3C-%3E-%3F
This worked for me:
utl_url.unescape(replace('your text here', '+', ' '),'UTF-8')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With