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

> Documentación de las funciones para trabajar con URL

# Funciones para trabajar con URL

<div id="overview">
  ## Descripción general
</div>

<Note>
  Las funciones mencionadas en esta sección están optimizadas para ofrecer el máximo rendimiento y, en su mayor parte, no siguen el estándar RFC-3986.
  Las funciones que implementan RFC-3986 llevan `RFC` al final del nombre y, por lo general, son más lentas.
</Note>

Por lo general, puedes usar las variantes de función sin `RFC` al trabajar con dominios registrados públicamente que no contienen ni cadenas de información de usuario ni símbolos `@`.
La tabla siguiente detalla qué símbolos de una URL pueden (`✔`) o no pueden (`✗`) analizarse con las respectivas variantes `RFC` y sin `RFC`:

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

Los símbolos marcados con `*` son subdelimitadores en RFC 3986 y están permitidos en la información de usuario después del símbolo `@`.

Hay dos tipos de funciones de URL:

* Funciones que extraen partes de una URL. Si la parte correspondiente no está presente en una URL, se devuelve una cadena vacía.
* Funciones que eliminan una parte de una URL. Si la URL no tiene nada parecido, la URL permanece sin cambios.

<Note>
  Las funciones que aparecen a continuación se generan a partir de la tabla del sistema `system.functions`.
</Note>

{/*AUTOGENERATED_START*/}

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

Introducido en: v1.1.0

Devuelve un array que contiene la URL truncada al final en los símbolos `/`, `?` y `#` de la ruta y la cadena de consulta. Los caracteres separadores consecutivos se consideran uno solo. El resultado incluye el protocolo y el host como primer elemento, seguido de rutas cada vez más largas que forman una jerarquía.

**Sintaxis**

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

**Argumentos**

* `url` — La URL que se debe procesar. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve un array de URL cada vez más largas que forman una jerarquía. [`Array(String)`](/es/reference/data-types/array)

**Ejemplos**

**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>

Introducido en: v1.1.0

Devuelve un array que contiene el componente de ruta de la URL, truncado al final por los símbolos `/`, `?` y `#`. A diferencia de `URLHierarchy`, el resultado no incluye el protocolo ni el host; empieza en la ruta. Los caracteres separadores consecutivos se cuentan como uno.

**Sintaxis**

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

**Argumentos**

* `url` — La URL que se va a procesar. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve un array de componentes de la ruta de la URL cada vez más largos que forman una jerarquía. [`Array(String)`](/es/reference/data-types/array)

**Ejemplos**

**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>

Introducido en: v1.1.0

Elimina el identificador de fragmento, incluida la almohadilla, de una URL.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve la URL sin el identificador de fragmento. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Elimina la cadena de consulta de una URL, incluido el signo de interrogación.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve la URL sin la cadena de consulta. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Elimina la cadena de consulta y el identificador de fragmento de una URL, incluidos el signo de interrogación y el signo #.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve la URL sin la cadena de consulta ni el identificador del fragmento. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Devuelve la parte del dominio que incluye los subdominios de nivel superior hasta el [primer subdominio significativo](/es/reference/functions/regular-functions/url-functions#firstSignificantSubdomain).

**Sintaxis**

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

**Argumentos**

* `url` — URL o cadena de dominio para procesar. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la parte del dominio que incluye los subdominios de nivel superior hasta el primer subdominio significativo, si es posible; de lo contrario, devuelve una cadena vacía. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v21.1.0

Devuelve la parte del dominio que incluye los subdominios de nivel superior hasta el primer subdominio significativo. Acepta el nombre de una [lista de TLD](https://en.wikipedia.org/wiki/List_of_Internet_top-level_domains) personalizada. Esta función puede resultar útil si necesitas una lista de TLD actualizada o si tienes una lista personalizada.

**Ejemplo de configuración**

```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: la ruta está bajo top_level_domains_path -->
</top_level_domains_lists>
```

**Sintaxis**

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

**Argumentos**

* `url` — URL o cadena de dominio que se va a procesar. [`String`](/es/reference/data-types/string)
* `tld_list_name` — Nombre de la lista de TLD personalizada configurada en ClickHouse. [`const String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la parte del dominio que incluye los subdominios de nivel superior hasta el primer subdominio significativo. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Uso de una lista de TLD personalizada para dominios no estándar**

```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>

Introducido en: v22.10.0

Devuelve la parte del dominio que incluye los subdominios de nivel superior hasta el primer subdominio significativo.
Acepta el nombre de una [lista de TLD](https://en.wikipedia.org/wiki/List_of_Internet_top-level_domains) personalizada.
Esta función puede ser útil si necesitas una lista de TLD actualizada o si tienes una lista personalizada.
Similar a [cutToFirstSignificantSubdomainCustom](#cutToFirstSignificantSubdomainCustom), pero conforme con RFC 3986.

**Ejemplo de configuración**

```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: la ruta está bajo top_level_domains_path -->
</top_level_domains_lists>
```

**Sintaxis**

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

**Argumentos**

* `url` — URL o cadena de dominio que se procesará según la RFC 3986. - `tld_list_name` — Nombre de la lista de TLD personalizada configurada en ClickHouse.

**Valor devuelto**

Devuelve la parte del dominio que incluye los subdominios de nivel superior hasta el primer subdominio significativo. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v21.1.0

Devuelve la parte del dominio que incluye los subdominios de nivel superior hasta el primer subdominio significativo, sin eliminar 'www'. Acepta el nombre de una lista de TLD personalizada. Puede ser útil si necesita una lista de TLD actualizada o si tiene una lista personalizada.

**Ejemplo de configuración**

````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: path está bajo top_level_domains_path -->
</top_level_domains_lists>
    

**Syntax**

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

**Argumentos**

* `url` — URL o cadena de dominio que se procesará. - `tld_list_name` — Nombre de la lista de TLD personalizada configurada en ClickHouse.

**Valor devuelto**

Parte del dominio que incluye los subdominios de nivel superior hasta el primer subdominio significativo, sin eliminar 'www'. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v22.10.0

Devuelve la parte del dominio que incluye los subdominios de nivel superior hasta el primer subdominio significativo, sin eliminar `www`.
Acepta un nombre de lista de TLD personalizada.
Puede resultar útil si necesitas una lista de TLD actualizada o si tienes una lista personalizada.
Es similar a [cutToFirstSignificantSubdomainCustomWithWWW](#cutToFirstSignificantSubdomainCustomWithWWW), pero cumple con [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).

**Ejemplo de configuración**

````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á dentro de top_level_domains_path */}
</top_level_domains_lists>
    

**Syntax**

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

**Argumentos**

* `url` — URL o cadena de dominio que se procesará conforme a RFC 3986. - `tld_list_name` — Nombre de la lista de TLD personalizada configurada en ClickHouse.

**Valor devuelto**

Devuelve la parte del dominio que incluye los subdominios de nivel superior hasta el primer subdominio significativo, sin eliminar `www`. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Análisis según RFC 3986 que conserva `www` con una 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>

Introducido en: v22.10.0

Devuelve la parte del dominio que incluye los subdominios de nivel superior hasta el ["primer subdominio significativo"](/es/reference/functions/regular-functions/url-functions#firstSignificantSubdomain). Es similar a [`cutToFirstSignificantSubdomain`](#cutToFirstSignificantSubdomain), pero cumple con [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).

**Sintaxis**

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

**Argumentos**

* `url` — URL o cadena de dominio que se va a procesar según la RFC 3986. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la parte del dominio que incluye los subdominios de nivel superior hasta el primer subdominio significativo, si es posible; en caso contrario, devuelve una cadena vacía. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v20.12.0

Devuelve la parte del dominio que incluye los subdominios de nivel superior hasta el "primer subdominio significativo", sin eliminar '[www](http://www).'.

Es similar a [`cutToFirstSignificantSubdomain`](#cutToFirstSignificantSubdomain), pero conserva el prefijo '[www](http://www).' si está presente.

**Sintaxis**

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

**Argumentos**

* `url` — URL o cadena de dominio que se va a procesar. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la parte del dominio que incluye los subdominios de nivel superior hasta el primer subdominio significativo (con www), si es posible; de lo contrario, devuelve una cadena vacía. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v22.10.0

Devuelve la parte del dominio que incluye los subdominios de nivel superior hasta el "primer subdominio significativo", sin eliminar 'www'. Es similar a [`cutToFirstSignificantSubdomainWithWWW`](#cutToFirstSignificantSubdomainWithWWW), pero cumple con [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).

**Sintaxis**

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

**Argumentos**

* `url` — URL o cadena de dominio que se procesará según la RFC 3986.

**Valor devuelto**

Devuelve la parte del dominio que incluye los subdominios de nivel superior hasta el primer subdominio significativo (con 'www'), si es posible; de lo contrario, devuelve una cadena vacía [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Elimina el parámetro `name` de una URL, si está presente.
Esta función no codifica ni descodifica los caracteres de los nombres de los parámetros; por ejemplo, `Client ID` y `Client%20ID` se tratan como nombres de parámetro distintos.

**Sintaxis**

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

**Argumentos**

* `url` — URL. [`String`](/es/reference/data-types/string)
* `name` — Nombre del parámetro de la URL. [`String`](/es/reference/data-types/string) o [`Array(String)`](/es/reference/data-types/array)

**Valor devuelto**

URL con el parámetro `name` eliminado. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Elimina el prefijo `www.` del dominio de la URL, si está presente.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve la URL con el prefijo `www.` eliminado del dominio. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Toma una cadena codificada en URL como entrada y la decodifica para devolverla a su forma original y legible.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve la URL decodificada. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Decodifica cadenas codificadas en URL según las reglas de codificación de formularios ([RFC-1866](https://www.rfc-editor.org/rfc/rfc1866.html)), donde los signos `+` se convierten en espacios y se decodifican los caracteres codificados mediante porcentaje.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve la URL decodificada. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Extrae el hostname de una URL.

La URL puede especificarse con o sin protocolo.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve el nombre del host si la cadena de entrada se puede analizar como una URL; de lo contrario, devuelve una cadena vacía. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v22.10.0

Extrae el hostname de una URL.
Similar a [`domain`](#domain), pero cumple con [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve el nombre del host si la cadena de entrada puede interpretarse como una URL; de lo contrario, una cadena vacía. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Devuelve el dominio de una URL sin el prefijo `www.`, si está presente.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve el nombre de dominio si la cadena de entrada puede analizarse como una URL (sin `www.` al principio); de lo contrario, devuelve una cadena vacía. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Devuelve el dominio sin `www.` al principio, si está presente. Es similar a [`domainWithoutWWW`](#domainWithoutWWW), pero cumple con la [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve el nombre de dominio si la cadena de entrada puede analizarse como una URL (sin `www.` al principio); de lo contrario, devuelve una cadena vacía. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v22.3.0

Toma una cadena normal y la convierte a un formato codificado para URL (codificación porcentual), en el que los caracteres especiales se reemplazan por sus equivalentes de codificación porcentual.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve la URL codificada. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v22.3.0

Codifica cadenas según las reglas de codificación de formularios ([RFC-1866](https://www.rfc-editor.org/rfc/rfc1866.html)), donde los espacios se convierten en signos + y los caracteres especiales se codifican mediante codificación porcentual.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve la URL codificada. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Devuelve el valor del parámetro `name` de la URL, si está presente; de lo contrario, devuelve una cadena vacía.
Si hay varios parámetros con este nombre, se devuelve la primera coincidencia.
La función asume que el parámetro del argumento `url` está codificado de la misma forma que el argumento `name`.

**Sintaxis**

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

**Argumentos**

* `url` — URL. [`String`](/es/reference/data-types/string)
* `name` — Nombre del parámetro. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve el valor del parámetro de la URL con el nombre indicado. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Devuelve un array con las cadenas correspondientes a los nombres de los parámetros de URL.
Los valores no se decodifican.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve un array de cadenas con los nombres de los parámetros de la URL. [`Array(String)`](/es/reference/data-types/array)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Devuelve un array de cadenas `name=value` correspondientes a los parámetros de la URL.
Los valores no se decodifican.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve un array de cadenas con formato `name=value` correspondiente a los parámetros de URL. [`Array(String)`](/es/reference/data-types/array)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Devuelve el "primer subdominio significativo".

El primer subdominio significativo es un dominio de segundo nivel si es 'com', 'net', 'org' o 'co'.
En caso contrario, es un dominio de tercer nivel.

Por ejemplo, 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'.

La lista de dominios de segundo nivel "insignificantes" y otros detalles de implementación podrían cambiar en el futuro.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

**Ejemplos**

**firstSignificantSubdomain**

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

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

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

Introducido en: v21.1.0

Devuelve el primer subdominio significativo de una URL a partir de una lista personalizada de TLD (dominios de nivel superior). El nombre de la lista personalizada de TLD hace referencia a una configuración que define qué sufijos de dominio deben tratarse como dominios de nivel superior. Esto resulta útil para jerarquías de TLD no estándar. La función utiliza un algoritmo simplificado de análisis de URL que asume que se han eliminado el protocolo y todo lo que le sigue.

**Sintaxis**

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

**Argumentos**

* `url` — La URL de la que se extrae el subdominio. [`String`](/es/reference/data-types/string)
* `tld_list_name` — Nombre de la lista personalizada de TLD de la configuración. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve el primer subdominio significativo. [`String`](/es/reference/data-types/string)

**Ejemplos**

**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>

Introducido en: v22.10.0

Similar a `firstSignificantSubdomainCustom`, pero utiliza un análisis de URL compatible con RFC 3986 en lugar del algoritmo simplificado.

**Sintaxis**

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

**Argumentos**

* `url` — La URL de la que extraer el subdominio. [`String`](/es/reference/data-types/string)
* `tld_list_name` — Nombre de la lista de TLD personalizada de la configuración. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve el primer subdominio significativo. [`String`](/es/reference/data-types/string)

**Ejemplos**

**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>

Introducido en: v22.10.0

Devuelve el "primer subdominio significativo" de acuerdo con la RFC 1034.

**Sintaxis**

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

**Argumentos**

* Ninguno.

**Valor devuelto**

**Ejemplos**

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

Introducido en: v1.1.0

Devuelve el identificador del fragmento sin el símbolo hash inicial.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve el identificador del fragmento sin el símbolo hash inicial. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v20.5.0

Extrae la ubicación de red (`username:password@host:port`) de una URL.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve `username:password@host:port` a partir de una URL dada. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Devuelve la ruta de una URL sin la cadena de consulta.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve la ruta de la URL sin la cadena de consulta. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Igual que [`path`](#path), pero incluye la cadena de consulta y el fragmento de la URL.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve la ruta de la URL, incluida la cadena de consulta y el fragmento. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v20.5.0

Devuelve el puerto de una URL, o `default_port` si la URL no incluye ningún puerto o no se puede analizar.

**Sintaxis**

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

**Argumentos**

* `url` — URL. [`String`](/es/reference/data-types/string)
* `default_port` — Opcional. Número de puerto predeterminado que se devolverá. `0` de forma predeterminada. [`UInt16`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve el puerto de la URL o el puerto predeterminado si la URL no incluye un puerto o en caso de error de validación. [`UInt16`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo 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>

Introducido en: v22.10.0

Devuelve el puerto o `default_port` si la URL no contiene ningún puerto o no se puede analizar.
Similar a [`port`](#port), pero conforme a [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).

**Sintaxis**

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

**Argumentos**

* `url` — URL. [`String`](/es/reference/data-types/string)
* `default_port` — Opcional. Número de puerto predeterminado que se devuelve. `0` de forma predeterminada. [`UInt16`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve el puerto o el puerto predeterminado si la URL no contiene ningún puerto o en caso de error de validación. [`UInt16`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Extrae el protocolo de una URL.

Ejemplos de valores devueltos habituales: http, https, ftp, mailto, tel, magnet.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve el protocolo de la URL o una cadena vacía si no se puede determinar. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Devuelve la cadena de consulta de una URL sin el signo de interrogación inicial, el `#` ni nada de lo que aparece después de `#`.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve la cadena de consulta de la URL, sin el signo de interrogación inicial ni el fragmento. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Devuelve la cadena de consulta y el identificador de fragmento de una URL.

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve la cadena de consulta y el identificador de fragmento de la URL. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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>

Introducido en: v1.1.0

Extrae el dominio de nivel superior de una URL.

<Note>
  La URL puede especificarse con o sin protocolo.
  Por ejemplo:

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

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Devuelve el nombre de dominio si la cadena de entrada puede interpretarse como una URL. En caso contrario, devuelve una cadena vacía. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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

Introducido en: v22.10.0

Extrae el dominio de nivel superior de una URL.
Similar a [`topLevelDomain`](#topLevelDomain), pero conforme con la [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).

**Sintaxis**

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

**Argumentos**

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

**Valor devuelto**

Nombre de dominio si la cadena de entrada puede interpretarse como una URL. En caso contrario, una cadena vacía. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo 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                                               │
└────────────────────────────────────────────────┴───────────────────────────────────────────────────┘
```
