# Presto 316 Documentation

## 7.18. URL Functions

## Extraction Functions

The URL extraction functions extract components from HTTP URLs (or any valid URIs conforming to RFC 2396). The following syntax is supported:

    [protocol:][//host[:port]][path][?query][#fragment]

The extracted components do not contain URI syntax separators such as `:` or `?`.

`url_extract_fragment`(url) → varchar

  Returns the fragment identifier from `url`.

`url_extract_host`(url) → varchar

  Returns the host from `url`.

`url_extract_parameter`(url, name) → varchar

  Returns the value of the first query string parameter named `name` from `url`. Parameter extraction is handled in the typical manner as specified by RFC 1866#section-8.2.1.

`url_extract_path`(url) → varchar

  Returns the path from `url`.

`url_extract_port`(url) → bigint

  Returns the port number from `url`.

`url_extract_protocol`(url) → varchar

  Returns the protocol from `url`.

`url_extract_query`(url) → varchar

  Returns the query string from `url`.

## Encoding Functions

`url_encode`(value) → varchar

  Escapes `value` by encoding it so that it can be safely included in URL query parameter names and values:

  - Alphanumeric characters are not encoded.
  - The characters `.`, `-`, `*` and `_` are not encoded.
  - The ASCII space character is encoded as `+`.
  - All other characters are converted to UTF-8 and the bytes are encoded as the string `%XX` where `XX` is the uppercase hexadecimal value of the UTF-8 byte.

`url_decode`(value) → varchar

  Unescapes the URL encoded `value`. This function is the inverse of `url_encode()`.