> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-home-button.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentação das funções usadas para trabalhar com URLs

# Funções para trabalhar com URLs

<div id="overview">
  ## Visão geral
</div>

<Note>
  As funções mencionadas nesta seção são otimizadas para máximo desempenho e, em sua maior parte, não seguem o padrão RFC-3986.
  As funções que implementam a RFC-3986 têm `RFC` acrescentado ao nome da função e, em geral, são mais lentas.
</Note>

Em geral, você pode usar as variantes de função sem `RFC` ao trabalhar com domínios registrados publicamente que não contenham informações de usuário nem símbolos `@`.
A tabela abaixo detalha quais símbolos em uma URL podem (`✔`) ou não podem (`✗`) ser interpretados pelas respectivas variantes com `RFC` e sem `RFC`:

| Símbolo | non-`RFC` | `RFC` |   |
| ------- | --------- | ----- | - |
| ' '     | ✗         | ✗     |   |
| \t      | ✗         | ✗     |   |
| \<      | ✗         | ✗     |   |
| >       | ✗         | ✗     |   |
| %       | ✗         | ✔\*   |   |
| \{      | ✗         | ✗     |   |
| }       | ✗         | ✗     |   |
|         |           | ✗     | ✗ |
| \\      | ✗         | ✗     |   |
| ^       | ✗         | ✗     |   |
| \~      | ✗         | ✔\*   |   |
| \[      | ✗         | ✗     |   |
| ]       | ✗         | ✔     |   |
| ;       | ✗         | ✔\*   |   |
| =       | ✗         | ✔\*   |   |
| &       | ✗         | ✔\*   |   |

os símbolos marcados com `*` são subdelimitadores na RFC 3986 e permitidos para informações do usuário após o símbolo `@`.

Há dois tipos de funções de URL:

* Funções que extraem partes de uma URL. Se a parte relevante não estiver presente em uma URL, uma string vazia será retornada.
* Funções que removem parte de uma URL. Se a URL não tiver nada equivalente, ela permanecerá inalterada.

<Note>
  As funções abaixo são geradas a partir da tabela de sistema `system.functions`.
</Note>

{/*AUTOGENERATED_START*/}

<div id="URLHierarchy">
  ## URLHierarchy
</div>

Introduzido em: v1.1.0

Retorna um array contendo a URL, truncada no final pelos símbolos `/`, `?` e `#` no caminho e na string de consulta. Caracteres separadores consecutivos são considerados como um só. O resultado inclui o protocolo e o host como primeiro elemento, com caminhos progressivamente mais longos formando uma hierarquia.

**Sintaxe**

```sql theme={null}
URLHierarchy(url)
```

**Argumentos**

* `url` — A URL a ser processada. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna um array de URLs progressivamente mais longas, que formam uma hierarquia. [`Array(String)`](/pt-BR/reference/data-types/array)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT URLHierarchy('https://example.com/a/b?c=1')
```

```response title=Response theme={null}
['https://example.com/','https://example.com/a/','https://example.com/a/b','https://example.com/a/b?c=1']
```

<div id="URLPathHierarchy">
  ## URLPathHierarchy
</div>

Introduzido em: v1.1.0

Retorna um array que contém o componente path da URL, truncado no final pelos símbolos `/`, `?` e `#`. Diferentemente de `URLHierarchy`, o resultado não inclui o protocolo nem o host — ele começa no path. Caracteres separadores consecutivos são considerados como um só.

**Sintaxe**

```sql theme={null}
URLPathHierarchy(url)
```

**Argumentos**

* `url` — A URL a ser processada. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna um array de componentes do caminho da URL progressivamente mais longos, formando uma hierarquia. [`Array(String)`](/pt-BR/reference/data-types/array)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT URLPathHierarchy('https://example.com/a/b?c=1')
```

```response title=Response theme={null}
['/a/','/a/b','/a/b?c=1']
```

<div id="cutFragment">
  ## cutFragment
</div>

Introduzido em: v1.1.0

Remove o identificador de fragmento, incluindo o caractere #, de uma URL.

**Sintaxe**

```sql theme={null}
cutFragment(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna a URL sem o identificador de fragmento. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT cutFragment('http://example.com/path?query=value#fragment123');
```

```response title=Response theme={null}
┌─cutFragment('http://example.com/path?query=value#fragment123')─┐
│ http://example.com/path?query=value                            │
└────────────────────────────────────────────────────────────────┘
```

<div id="cutQueryString">
  ## cutQueryString
</div>

Introduzido em: v1.1.0

Remove a string de consulta, incluindo o ponto de interrogação, de uma URL.

**Sintaxe**

```sql theme={null}
cutQueryString(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna a URL sem a string de consulta. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT cutQueryString('http://example.com/path?query=value&param=123#fragment');
```

```response title=Response theme={null}
┌─cutQueryString('http://example.com/path?query=value&param=123#fragment')─┐
│ http://example.com/path#fragment                                         │
└──────────────────────────────────────────────────────────────────────────┘
```

<div id="cutQueryStringAndFragment">
  ## cutQueryStringAndFragment
</div>

Introduzido em: v1.1.0

Remove a string de consulta e o identificador de fragmento de uma URL, incluindo o ponto de interrogação e o sinal de cerquilha (#).

**Sintaxe**

```sql theme={null}
cutQueryStringAndFragment(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna a URL sem a string de consulta e o identificador de fragmento. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT cutQueryStringAndFragment('http://example.com/path?query=value&param=123#fragment');
```

```response title=Response theme={null}
┌─cutQueryStringAndFragment('http://example.com/path?query=value&param=123#fragment')─┐
│ http://example.com/path                                                             │
└─────────────────────────────────────────────────────────────────────────────────────┘
```

<div id="cutToFirstSignificantSubdomain">
  ## cutToFirstSignificantSubdomain
</div>

Introduzido em: v1.1.0

Retorna a parte do domínio que abrange os subdomínios de nível superior até o [primeiro subdomínio significativo](/pt-BR/reference/functions/regular-functions/url-functions#firstSignificantSubdomain).

**Sintaxe**

```sql theme={null}
cutToFirstSignificantSubdomain(url)
```

**Argumentos**

* `url` — URL ou string de domínio a ser processada. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna a parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo, quando possível; caso contrário, retorna uma string vazia. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT
    cutToFirstSignificantSubdomain('https://news.clickhouse.com.tr/'),
    cutToFirstSignificantSubdomain('www.tr'),
    cutToFirstSignificantSubdomain('tr');
```

```response title=Response theme={null}
┌─cutToFirstSignificantSubdomain('https://news.clickhouse.com.tr/')─┬─cutToFirstSignificantSubdomain('www.tr')─┬─cutToFirstSignificantSubdomain('tr')─┐
│ clickhouse.com.tr                                                 │ tr                                       │                                      │
└───────────────────────────────────────────────────────────────────┴──────────────────────────────────────────┴──────────────────────────────────────┘
```

<div id="cutToFirstSignificantSubdomainCustom">
  ## cutToFirstSignificantSubdomainCustom
</div>

Introduzido em: v21.1.0

Retorna a parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo. Aceita o nome de uma [lista de TLD](https://en.wikipedia.org/wiki/List_of_Internet_top-level_domains) personalizada. Esta função pode ser útil se você precisar de uma lista de TLD atualizada ou se tiver uma lista personalizada.

**Exemplo de configuração**

```yaml theme={null}
<!-- <top_level_domains_path>/var/lib/clickhouse/top_level_domains/</top_level_domains_path> -->
<top_level_domains_lists>
    <!-- https://publicsuffix.org/list/public_suffix_list.dat -->
    <public_suffix_list>public_suffix_list.dat</public_suffix_list>
    <!-- NOTA: o caminho está sob top_level_domains_path -->
</top_level_domains_lists>
```

**Sintaxe**

```sql theme={null}
cutToFirstSignificantSubdomainCustom(url, tld_list_name)
```

**Argumentos**

* `url` — String de URL ou de domínio a ser processada. [`String`](/pt-BR/reference/data-types/string)
* `tld_list_name` — Nome da lista personalizada de TLD configurada no ClickHouse. [`const String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna a parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Usando uma lista personalizada de TLD para domínios não padrão**

```sql title=Query theme={null}
SELECT cutToFirstSignificantSubdomainCustom('bar.foo.there-is-no-such-domain', 'public_suffix_list')
```

```response title=Response theme={null}
foo.there-is-no-such-domain
```

<div id="cutToFirstSignificantSubdomainCustomRFC">
  ## cutToFirstSignificantSubdomainCustomRFC
</div>

Introduzido em: v22.10.0

Retorna a parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo.
Aceita o nome de uma [lista de TLDs](https://en.wikipedia.org/wiki/List_of_Internet_top-level_domains) personalizada.
Essa função pode ser útil se você precisar de uma lista de TLDs atualizada ou se tiver uma lista personalizada.
Semelhante a [cutToFirstSignificantSubdomainCustom](#cutToFirstSignificantSubdomainCustom), mas em conformidade com a RFC 3986.

**Exemplo de configuração**

```xml theme={null}
<!-- <top_level_domains_path>/var/lib/clickhouse/top_level_domains/</top_level_domains_path> -->
<top_level_domains_lists>
    <!-- https://publicsuffix.org/list/public_suffix_list.dat -->
    <public_suffix_list>public_suffix_list.dat</public_suffix_list>
    <!-- NOTA: o caminho está sob top_level_domains_path -->
</top_level_domains_lists>
```

**Sintaxe**

```sql theme={null}
cutToFirstSignificantSubdomainCustomRFC(url, tld_list_name)
```

**Argumentos**

* `url` — String de URL ou de domínio a ser processada de acordo com a RFC 3986. - `tld_list_name` — Nome da lista personalizada de TLD configurada no ClickHouse.

**Valor retornado**

Retorna a parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT cutToFirstSignificantSubdomainCustomRFC('www.foo', 'public_suffix_list');
```

```response title=Response theme={null}
┌─cutToFirstSignificantSubdomainCustomRFC('www.foo', 'public_suffix_list')─────┐
│ www.foo                                                                      │
└──────────────────────────────────────────────────────────────────────────────┘
```

<div id="cutToFirstSignificantSubdomainCustomWithWWW">
  ## cutToFirstSignificantSubdomainCustomWithWWW
</div>

Introduzido na versão: v21.1.0

Retorna a parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo, sem remover 'www'. Aceita o nome de uma lista personalizada de TLDs. Pode ser útil se você precisar de uma lista de TLDs mais atualizada ou se tiver uma lista personalizada.

**Exemplo de configuração**

````yaml theme={null}
<!-- <top_level_domains_path>/var/lib/clickhouse/top_level_domains/</top_level_domains_path> -->
<top_level_domains_lists>
    <!-- https://publicsuffix.org/list/public_suffix_list.dat -->
    <public_suffix_list>public_suffix_list.dat</public_suffix_list>
    <!-- NOTE: o path está dentro de top_level_domains_path -->
</top_level_domains_lists>
    

**Syntax**

```sql
cutToFirstSignificantSubdomainCustomWithWWW(url, tld_list_name)
````

**Argumentos**

* `url` — URL ou string de domínio a ser processada. - `tld_list_name` — Nome da lista personalizada de TLD configurada no ClickHouse.

**Valor retornado**

Parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo, sem remover 'www'. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT cutToFirstSignificantSubdomainCustomWithWWW('www.foo', 'public_suffix_list');
```

```response title=Response theme={null}
┌─cutToFirstSignificantSubdomainCustomWithWWW('www.foo', 'public_suffix_list')─┐
│ www.foo                                                                      │
└──────────────────────────────────────────────────────────────────────────────┘
```

<div id="cutToFirstSignificantSubdomainRFC">
  ## cutToFirstSignificantSubdomainCustomWithWWWRFC
</div>

Introduzido em: v22.10.0

Retorna a parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo, sem remover `www`.
Aceita o nome de uma lista personalizada de TLDs.
Pode ser útil se você precisar de uma lista de TLDs atualizada ou se tiver uma lista personalizada.
Semelhante a [cutToFirstSignificantSubdomainCustomWithWWW](#cutToFirstSignificantSubdomainCustomWithWWW), mas está em conformidade com a [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).

**Exemplo de configuração**

````xml theme={null}
{/* <top_level_domains_path>/var/lib/clickhouse/top_level_domains/</top_level_domains_path> */}
<top_level_domains_lists>
    {/* https://publicsuffix.org/list/public_suffix_list.dat */}
    <public_suffix_list>public_suffix_list.dat</public_suffix_list>
    {/* NOTA: path está em top_level_domains_path */}
</top_level_domains_lists>
    

**Syntax**

```sql
cutToFirstSignificantSubdomainCustomWithWWWRFC(url, tld_list_name)
````

**Argumentos**

* `url` — URL ou string de domínio a ser processado de acordo com a RFC 3986. - `tld_list_name` — Nome da lista de TLD personalizada configurada no ClickHouse.

**Valor retornado**

Retorna a parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo, sem remover `www`. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Processamento RFC 3986 preservando `www` com lista de TLD personalizada**

```sql title=Query theme={null}
SELECT cutToFirstSignificantSubdomainCustomWithWWWRFC('https://www.subdomain.example.custom', 'public_suffix_list')
```

```response title=Response theme={null}
www.example.custom
```

<div id="cutToFirstSignificantSubdomainWithWWW">
  ## cutToFirstSignificantSubdomainRFC
</div>

Introduzido em: v22.10.0

Retorna a parte do domínio que inclui os subdomínios de nível superior até o ["primeiro subdomínio significativo"](/pt-BR/reference/functions/regular-functions/url-functions#firstSignificantSubdomain). É semelhante a [`cutToFirstSignificantSubdomain`](#cutToFirstSignificantSubdomain), mas está em conformidade com a [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).

**Sintaxe**

```sql theme={null}
cutToFirstSignificantSubdomainRFC(url)
```

**Argumentos**

* `url` — URL ou string de domínio a ser processado de acordo com a RFC 3986. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna a parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo, se possível; caso contrário, retorna uma string vazia. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT
    cutToFirstSignificantSubdomain('http://user:password@example.com:8080'),
    cutToFirstSignificantSubdomainRFC('http://user:password@example.com:8080');
```

```response title=Response theme={null}
┌─cutToFirstSignificantSubdomain('http://user:password@example.com:8080')─┬─cutToFirstSignificantSubdomainRFC('http://user:password@example.com:8080')─┐
│                                                                         │ example.com                                                                │
└─────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────┘
```

<div id="cutToFirstSignificantSubdomainWithWWWRFC">
  ## cutToFirstSignificantSubdomainWithWWW
</div>

Introduzido em: v20.12.0

Retorna a parte do domínio que inclui os subdomínios de nível superior até o "primeiro subdomínio significativo", sem remover '[www](http://www).'.

Semelhante a [`cutToFirstSignificantSubdomain`](#cutToFirstSignificantSubdomain), mas preserva o prefixo '[www](http://www).', se presente.

**Sintaxe**

```sql theme={null}
cutToFirstSignificantSubdomainWithWWW(url)
```

**Argumentos**

* `url` — URL ou string de domínio a ser processada. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna a parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo (incluindo `www`), quando possível; caso contrário, retorna uma string vazia. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT
    cutToFirstSignificantSubdomainWithWWW('https://news.clickhouse.com.tr/'),
    cutToFirstSignificantSubdomainWithWWW('www.tr'),
    cutToFirstSignificantSubdomainWithWWW('tr');
```

```response title=Response theme={null}
┌─cutToFirstSignificantSubdomainWithWWW('https://news.clickhouse.com.tr/')─┬─cutToFirstSignificantSubdomainWithWWW('www.tr')─┬─cutToFirstSignificantSubdomainWithWWW('tr')─┐
│ clickhouse.com.tr                                                        │ www.tr                                          │                                             │
└──────────────────────────────────────────────────────────────────────────┴─────────────────────────────────────────────────┴─────────────────────────────────────────────┘
```

<div id="cutURLParameter">
  ## cutToFirstSignificantSubdomainWithWWWRFC
</div>

Introduzido em: v22.10.0

Retorna a parte do domínio que inclui os subdomínios de nível superior até o "primeiro subdomínio significativo", sem remover 'www'. Semelhante a [`cutToFirstSignificantSubdomainWithWWW`](#cutToFirstSignificantSubdomainWithWWW), mas em conformidade com a [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).

**Sintaxe**

```sql theme={null}
cutToFirstSignificantSubdomainWithWWWRFC(url)
```

**Argumentos**

* `url` — URL ou string de domínio a ser processado de acordo com a RFC 3986.

**Valor retornado**

Retorna a parte do domínio que inclui os subdomínios de nível superior até o primeiro subdomínio significativo (com 'www'), se possível; caso contrário, retorna uma string vazia [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT
    cutToFirstSignificantSubdomainWithWWW('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy'),
    cutToFirstSignificantSubdomainWithWWWRFC('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy');
```

```response title=Response theme={null}
┌─cutToFirstSignificantSubdomainWithWWW('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy')─┬─cutToFirstSignificantSubdomainWithWWWRFC('http:%2F%2Fwwwww.nova@mail.ru/economicheskiy')─┐
│                                                                                       │ mail.ru                                                                                  │
└───────────────────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────┘
```

<div id="cutWWW">
  ## cutURLParameter
</div>

Introduzido em: v1.1.0

Remove o parâmetro `name` de uma URL, se ele estiver presente.
Esta função não codifica nem decodifica caracteres nos nomes dos parâmetros; por exemplo, `Client ID` e `Client%20ID` são tratados como nomes de parâmetros diferentes.

**Sintaxe**

```sql theme={null}
cutURLParameter(url, name)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)
* `name` — Nome do parâmetro da URL. [`String`](/pt-BR/reference/data-types/string) ou [`Array(String)`](/pt-BR/reference/data-types/array)

**Valor retornado**

URL com o parâmetro `name` removido. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT
    cutURLParameter('http://bigmir.net/?a=b&c=d&e=f#g', 'a') AS url_without_a,
    cutURLParameter('http://bigmir.net/?a=b&c=d&e=f#g', ['c', 'e']) AS url_without_c_and_e;
```

```response title=Response theme={null}
┌─url_without_a────────────────┬─url_without_c_and_e──────┐
│ http://bigmir.net/?c=d&e=f#g │ http://bigmir.net/?a=b#g │
└──────────────────────────────┴──────────────────────────┘
```

<div id="decodeURLComponent">
  ## cutWWW
</div>

Introduzido em: v1.1.0

Remove o prefixo `www.`, se presente, do domínio da URL.

**Sintaxe**

```sql theme={null}
cutWWW(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna a URL com o prefixo `www.` removido do domínio. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT cutWWW('http://www.example.com/path?query=value#fragment');
```

```response title=Response theme={null}
┌─cutWWW('http://www.example.com/path?query=value#fragment')─┐
│ http://example.com/path?query=value#fragment               │
└────────────────────────────────────────────────────────────┘
```

<div id="decodeURLFormComponent">
  ## decodeURLComponent
</div>

Introduzido em: v1.1.0

Recebe como entrada uma string codificada em URL e a decodifica para sua forma original e legível.

**Sintaxe**

```sql theme={null}
decodeURLComponent(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna a URL decodificada. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT decodeURLComponent('http://127.0.0.1:8123/?query=SELECT%201%3B') AS DecodedURL;
```

```response title=Response theme={null}
┌─DecodedURL─────────────────────────────┐
│ http://127.0.0.1:8123/?query=SELECT 1; │
└────────────────────────────────────────┘
```

<div id="domain">
  ## decodeURLFormComponent
</div>

Introduzido em: v1.1.0

Decodifica strings codificadas em URL usando regras de codificação de formulários ([RFC-1866](https://www.rfc-editor.org/rfc/rfc1866.html)), em que os sinais de `+` são convertidos em espaços e os caracteres codificados por percentual são decodificados.

**Sintaxe**

```sql theme={null}
decodeURLFormComponent(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna a URL decodificada. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT decodeURLFormComponent('http://127.0.0.1:8123/?query=SELECT%201+2%2B3') AS DecodedURL;
```

```response title=Response theme={null}
┌─DecodedURL────────────────────────────────┐
│ http://127.0.0.1:8123/?query=SELECT 1 2+3 │
└───────────────────────────────────────────┘
```

<div id="domainRFC">
  ## domain
</div>

Introduzido em: v1.1.0

Extrai o nome do host de uma URL.

A URL pode ser especificada com ou sem protocolo.

**Sintaxe**

```sql theme={null}
domain(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o nome do host se a string de entrada puder ser interpretada como uma URL; caso contrário, retorna uma string vazia. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT domain('svn+ssh://some.svn-hosting.com:80/repo/trunk');
```

```response title=Response theme={null}
┌─domain('svn+ssh://some.svn-hosting.com:80/repo/trunk')─┐
│ some.svn-hosting.com                                   │
└────────────────────────────────────────────────────────┘
```

<div id="domainWithoutWWW">
  ## domainRFC
</div>

Introduzido em: v22.10.0

Extrai o hostname de uma URL.
Semelhante a [`domain`](#domain), mas compatível com a [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).

**Sintaxe**

```sql theme={null}
domainRFC(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o nome do host se a string de entrada puder ser interpretada como uma URL; caso contrário, retorna uma string vazia. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT
    domain('http://user:password@example.com:8080/path?query=value#fragment'),
    domainRFC('http://user:password@example.com:8080/path?query=value#fragment');
```

```response title=Response theme={null}
┌─domain('http://user:password@example.com:8080/path?query=value#fragment')─┬─domainRFC('http://user:password@example.com:8080/path?query=value#fragment')─┐
│                                                                           │ example.com                                                                  │
└───────────────────────────────────────────────────────────────────────────┴──────────────────────────────────────────────────────────────────────────────┘
```

<div id="domainWithoutWWWRFC">
  ## domainWithoutWWW
</div>

Introduzido em: v1.1.0

Retorna o domínio de uma URL sem o `www.` inicial, se houver.

**Sintaxe**

```sql theme={null}
domainWithoutWWW(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o nome de domínio se a string de entrada puder ser interpretada como uma URL (sem `www.` no início); caso contrário, retorna uma string vazia. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT domainWithoutWWW('http://paul@www.example.com:80/');
```

```response title=Response theme={null}
┌─domainWithoutWWW('http://paul@www.example.com:80/')─┐
│ example.com                                         │
└─────────────────────────────────────────────────────┘
```

<div id="encodeURLComponent">
  ## domainWithoutWWWRFC
</div>

Introduzido em: v1.1.0

Retorna o domínio sem `www.` no início, se houver. Semelhante a [`domainWithoutWWW`](#domainWithoutWWW), mas em conformidade com a [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).

**Sintaxe**

```sql theme={null}
domainWithoutWWWRFC(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o nome de domínio se a string de entrada puder ser interpretada como uma URL (sem `www.` no início); caso contrário, retorna uma string vazia. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT
    domainWithoutWWW('http://user:password@www.example.com:8080/path?query=value#fragment'),
    domainWithoutWWWRFC('http://user:password@www.example.com:8080/path?query=value#fragment');
```

```response title=Response theme={null}
┌─domainWithoutWWW('http://user:password@www.example.com:8080/path?query=value#fragment')─┬─domainWithoutWWWRFC('http://user:password@www.example.com:8080/path?query=value#fragment')─┐
│                                                                                         │ example.com                                                                                │
└─────────────────────────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────┘
```

<div id="encodeURLFormComponent">
  ## encodeURLComponent
</div>

Introduzido em: v22.3.0

Recebe uma string comum e a converte para o formato codificado para URL (percent-encoded), no qual caracteres especiais são substituídos por seus equivalentes codificados por porcentagem.

**Sintaxe**

```sql theme={null}
encodeURLComponent(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna a URL codificada. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT encodeURLComponent('http://127.0.0.1:8123/?query=SELECT 1;') AS EncodedURL;
```

```response title=Response theme={null}
┌─EncodedURL───────────────────────────────────────────────┐
│ http%3A%2F%2F127.0.0.1%3A8123%2F%3Fquery%3DSELECT%201%3B │
└──────────────────────────────────────────────────────────┘
```

<div id="extractURLParameter">
  ## encodeURLFormComponent
</div>

Introduzido na versão: v22.3.0

Codifica strings usando regras de codificação de formulários ([RFC-1866](https://www.rfc-editor.org/rfc/rfc1866.html)), em que os espaços são convertidos em sinais de + e os caracteres especiais são codificados por percentual.

**Sintaxe**

```sql theme={null}
encodeURLFormComponent(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna a URL codificada. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT encodeURLFormComponent('http://127.0.0.1:8123/?query=SELECT 1 2+3') AS EncodedURL;
```

```response title=Response theme={null}
┌─EncodedURL────────────────────────────────────────────────┐
│ http%3A%2F%2F127.0.0.1%3A8123%2F%3Fquery%3DSELECT+1+2%2B3 │
└───────────────────────────────────────────────────────────┘
```

<div id="extractURLParameterNames">
  ## extractURLParameter
</div>

Introduzido em: v1.1.0

Retorna o valor do parâmetro `name` na URL, se ele estiver presente; caso contrário, retorna uma string vazia.
Se houver vários parâmetros com esse nome, a primeira ocorrência será retornada.
A função pressupõe que o parâmetro no argumento `url` esteja codificado da mesma forma que no argumento `name`.

**Sintaxe**

```sql theme={null}
extractURLParameter(url, name)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)
* `name` — Nome do parâmetro. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o valor do parâmetro da URL com o nome especificado. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT extractURLParameter('http://example.com/?param1=value1&param2=value2', 'param1');
```

```response title=Response theme={null}
┌─extractURLPa⋯, 'param1')─┐
│ value1                   │
└──────────────────────────┘
```

<div id="extractURLParameters">
  ## extractURLParameterNames
</div>

Introduzido em: v1.1.0

Retorna um array de strings com os nomes correspondentes aos parâmetros de URL.
Os valores não são decodificados.

**Sintaxe**

```sql theme={null}
extractURLParameterNames(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna um array de strings com os nomes dos parâmetros de URL. [`Array(String)`](/pt-BR/reference/data-types/array)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT extractURLParameterNames('http://example.com/?param1=value1&param2=value2');
```

```response title=Response theme={null}
┌─extractURLPa⋯m2=value2')─┐
│ ['param1','param2']      │
└──────────────────────────┘
```

<div id="firstSignificantSubdomain">
  ## extractURLParameters
</div>

Introduzido em: v1.1.0

Retorna um array de strings `name=value` correspondente aos parâmetros da URL.
Os valores não são decodificados.

**Sintaxe**

```sql theme={null}
extractURLParameters(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna um array de strings `name=value` correspondentes aos parâmetros da URL. [`Array(String)`](/pt-BR/reference/data-types/array)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT extractURLParameters('http://example.com/?param1=value1&param2=value2');
```

```response title=Response theme={null}
┌─extractURLParame⋯&param2=value2')─┐
│ ['param1=value1','param2=value2'] │
└───────────────────────────────────┘
```

<div id="firstSignificantSubdomainCustom">
  ## firstSignificantSubdomain
</div>

Introduzido em: v1.1.0

Retorna o "primeiro subdomínio significativo".

O primeiro subdomínio significativo é um domínio de segundo nível se for 'com', 'net', 'org' ou 'co'.
Caso contrário, é um domínio de terceiro nível.

Por exemplo, firstSignificantSubdomain('[https://news.clickhouse.com/\&#39](https://news.clickhouse.com/\&#39);) = 'clickhouse', firstSignificantSubdomain ('[https://news.clickhouse.com.tr/\&#39](https://news.clickhouse.com.tr/\&#39);) = 'clickhouse'.

A lista de domínios de segundo nível "insignificantes" e outros detalhes de implementação poderão mudar no futuro.

**Sintaxe**

```sql theme={null}
firstSignificantSubdomain(url)
```

**Argumentos**

* Nenhum.

**Valor retornado**

**Exemplos**

**firstSignificantSubdomain**

```sql title=Query theme={null}
SELECT firstSignificantSubdomain('https://news.clickhouse.com/')
```

```response title=Response theme={null}
```

<div id="firstSignificantSubdomainCustomRFC">
  ## firstSignificantSubdomainCustom
</div>

Introduzido em: v21.1.0

Retorna o subdomínio significativo de uma URL usando uma lista personalizada de TLDs (Top-Level Domains). O nome dessa lista personalizada de TLDs se refere a uma configuração que define quais sufixos de domínio devem ser tratados como domínios de nível superior. Isso é útil para hierarquias de TLDs não padrão. A função usa um algoritmo simplificado de parsing de URL, que pressupõe que o protocolo e tudo o que vem depois já foram removidos.

**Sintaxe**

```sql theme={null}
firstSignificantSubdomainCustom(url, tld_list_name)
```

**Argumentos**

* `url` — A URL da qual o subdomínio será extraído. [`String`](/pt-BR/reference/data-types/string)
* `tld_list_name` — Nome da lista de TLD personalizada da configuração. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o subdomínio significativo. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT firstSignificantSubdomainCustom('https://news.example.com', 'public_suffix_list')
```

```response title=Response theme={null}
example
```

<div id="firstSignificantSubdomainRFC">
  ## firstSignificantSubdomainCustomRFC
</div>

Introduzido na versão: v22.10.0

Semelhante a `firstSignificantSubdomainCustom`, mas usa parsing de URL compatível com a RFC 3986 em vez do algoritmo simplificado.

**Sintaxe**

```sql theme={null}
firstSignificantSubdomainCustomRFC(url, tld_list_name)
```

**Argumentos**

* `url` — URL da qual o subdomínio será extraído. [`String`](/pt-BR/reference/data-types/string)
* `tld_list_name` — Nome da lista de TLD personalizada da configuração. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o primeiro subdomínio significativo. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Uso básico**

```sql title=Query theme={null}
SELECT firstSignificantSubdomainCustomRFC('https://news.example.com', 'public_suffix_list')
```

```response title=Response theme={null}
example
```

<div id="fragment">
  ## firstSignificantSubdomainRFC
</div>

Introduzido em: v22.10.0

Retorna o "primeiro subdomínio significativo" de acordo com a RFC 1034.

**Sintaxe**

```sql theme={null}
firstSignificantSubdomainRFC(url)
```

**Argumentos**

* Nenhum.

**Valor de retorno**

**Exemplos**

<div id="netloc">
  ## fragment
</div>

Introduzido em: v1.1.0

Retorna o identificador do fragmento sem o símbolo hash inicial.

**Sintaxe**

```sql theme={null}
fragment(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o identificador do fragmento sem o símbolo `hash` inicial. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT fragment('https://clickhouse.com/docs/getting-started/quick-start/cloud#1-create-a-clickhouse-service');
```

```response title=Response theme={null}
┌─fragment('http⋯ouse-service')─┐
│ 1-create-a-clickhouse-service │
└───────────────────────────────┘
```

<div id="path">
  ## netloc
</div>

Introduzido em: v20.5.0

Extrai a parte de rede (`username:password@host:port`) de uma URL.

**Sintaxe**

```sql theme={null}
netloc(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna `username:password@host:port` a partir de uma determinada URL. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT netloc('http://paul@www.example.com:80/');
```

```response title=Response theme={null}
┌─netloc('http⋯e.com:80/')─┐
│ paul@www.example.com:80  │
└──────────────────────────┘
```

<div id="pathFull">
  ## path
</div>

Introduzido em: v1.1.0

Retorna o caminho de uma URL sem a query string.

**Sintaxe**

```sql theme={null}
path(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o caminho da URL, sem a query string. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT path('https://clickhouse.com/docs/sql-reference/functions/url-functions/?query=value');
```

```response title=Response theme={null}
┌─path('https://clickhouse.com/en/sql-reference/functions/url-functions/?query=value')─┐
│ /docs/sql-reference/functions/url-functions/                                         │
└──────────────────────────────────────────────────────────────────────────────────────┘
```

<div id="port">
  ## pathFull
</div>

Introduzido em: v1.1.0

Igual a [`path`](#path), mas inclui a string de consulta e o fragmento da URL.

**Sintaxe**

```sql theme={null}
pathFull(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o caminho da URL, incluindo a query string e o fragmento. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT pathFull('https://clickhouse.com/docs/sql-reference/functions/url-functions/?query=value#section');
```

```response title=Response theme={null}
┌─pathFull('https://clickhouse.com⋯unctions/?query=value#section')─┐
│ /docs/sql-reference/functions/url-functions/?query=value#section │
└──────────────────────────────────────────────────────────────────┘
```

<div id="portRFC">
  ## port
</div>

Introduzido em: v20.5.0

Retorna a porta de uma URL ou `default_port` se a URL não contiver uma porta ou não puder ser analisada.

**Sintaxe**

```sql theme={null}
port(url[, default_port])
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)
* `default_port` — Opcional. O número da porta padrão a ser retornado. `0` por padrão. [`UInt16`](/pt-BR/reference/data-types/int-uint)

**Valor retornado**

Retorna a porta da URL ou a porta padrão caso não haja porta na URL ou ocorra um erro de validação. [`UInt16`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT port('https://clickhouse.com:8443/docs'), port('https://clickhouse.com/docs', 443);
```

```response title=Response theme={null}
┌─port('https://clickhouse.com:8443/docs')─┬─port('https://clickhouse.com/docs', 443)─┐
│                                     8443 │                                      443 │
└──────────────────────────────────────────┴──────────────────────────────────────────┘
```

<div id="protocol">
  ## portRFC
</div>

Introduzido em: v22.10.0

Retorna a porta ou `default_port` se a URL não contiver uma porta ou não puder ser analisada.
Semelhante a [`port`](#port), mas em conformidade com a [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).

**Sintaxe**

```sql theme={null}
portRFC(url[, default_port])
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)
* `default_port` — Opcional. Número da porta padrão a ser retornado. `0` por padrão. [`UInt16`](/pt-BR/reference/data-types/int-uint)

**Valor retornado**

Retorna a porta ou a porta padrão se não houver uma porta na URL ou em caso de erro de validação. [`UInt16`](/pt-BR/reference/data-types/int-uint)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT port('http://user:password@example.com:8080/'), portRFC('http://user:password@example.com:8080/');
```

```response title=Response theme={null}
┌─port('http:/⋯com:8080/')─┬─portRFC('htt⋯com:8080/')─┐
│                        0 │                     8080 │
└──────────────────────────┴──────────────────────────┘
```

<div id="queryString">
  ## protocol
</div>

Introduzido em: v1.1.0

Extrai o protocolo de uma URL.

Exemplos de valores retornados comuns: http, https, ftp, mailto, tel, magnet.

**Sintaxe**

```sql theme={null}
protocol(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o protocolo da URL ou uma string vazia, caso não seja possível determiná-lo. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT protocol('https://clickhouse.com/');
```

```response title=Response theme={null}
┌─protocol('https://clickhouse.com/')─┐
│ https                               │
└─────────────────────────────────────┘
```

<div id="queryStringAndFragment">
  ## queryString
</div>

Introduzido em: v1.1.0

Retorna a query string de uma URL, sem o ponto de interrogação inicial, o `#` nem nada após o `#`.

**Sintaxe**

```sql theme={null}
queryString(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna a query string da URL sem o ponto de interrogação inicial e o fragmento. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT queryString('https://clickhouse.com/docs?query=value&param=123#section');
```

```response title=Response theme={null}
┌─queryString(⋯3#section')─┐
│ query=value&param=123    │
└──────────────────────────┘
```

<div id="topLevelDomain">
  ## queryStringAndFragment
</div>

Introduzido em: v1.1.0

Retorna a query string e o identificador de fragmento de uma URL.

**Sintaxe**

```sql theme={null}
queryStringAndFragment(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna a query string e o identificador de fragmento da URL. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT queryStringAndFragment('https://clickhouse.com/docs?query=value&param=123#section');
```

```response title=Response theme={null}
┌─queryStringAnd⋯=123#section')─┐
│ query=value&param=123#section │
└───────────────────────────────┘
```

<div id="topLevelDomainRFC">
  ## topLevelDomain
</div>

Introduzido em: v1.1.0

Extrai o domínio de nível superior de uma URL.

<Note>
  A URL pode ser especificada com ou sem protocolo.
  Por exemplo:

  ```text theme={null}
  svn+ssh://some.svn-hosting.com:80/repo/trunk
  some.svn-hosting.com:80/repo/trunk
  https://clickhouse.com/time/
  ```
</Note>

**Sintaxe**

```sql theme={null}
topLevelDomain(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Retorna o nome de domínio se a string de entrada puder ser interpretada como uma URL. Caso contrário, retorna uma string vazia. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT topLevelDomain('svn+ssh://www.some.svn-hosting.com:80/repo/trunk');
```

```response title=Response theme={null}
┌─topLevelDomain('svn+ssh://www.some.svn-hosting.com:80/repo/trunk')─┐
│ com                                                                │
└────────────────────────────────────────────────────────────────────┘
```

## topLevelDomainRFC

Introduzido em: v22.10.0

Extrai o domínio de nível superior de uma URL.
Semelhante a [`topLevelDomain`](#topLevelDomain), mas em conformidade com a [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).

**Sintaxe**

```sql theme={null}
topLevelDomainRFC(url)
```

**Argumentos**

* `url` — URL. [`String`](/pt-BR/reference/data-types/string)

**Valor retornado**

Nome de domínio, se a string de entrada puder ser interpretada como uma URL. Caso contrário, uma string vazia. [`String`](/pt-BR/reference/data-types/string)

**Exemplos**

**Exemplo de uso**

```sql title=Query theme={null}
SELECT topLevelDomain('http://foo:foo%41bar@foo.com'), topLevelDomainRFC('http://foo:foo%41bar@foo.com');
```

```response title=Response theme={null}
┌─topLevelDomain('http://foo:foo%41bar@foo.com')─┬─topLevelDomainRFC('http://foo:foo%41bar@foo.com')─┐
│                                                │ com                                               │
└────────────────────────────────────────────────┴───────────────────────────────────────────────────┘
```
