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

> Documentation des fonctions permettant de manipuler les URL

# Fonctions de manipulation des URL

<div id="overview">
  ## Vue d’ensemble
</div>

<Note>
  Les fonctions mentionnées dans cette section sont optimisées pour offrir des performances maximales et, dans la plupart des cas, ne respectent pas la norme RFC-3986.
  Les fonctions qui implémentent la RFC-3986 ont `RFC` ajouté à leur nom et sont généralement plus lentes.
</Note>

Vous pouvez généralement utiliser les variantes de fonction sans `RFC` lorsque vous travaillez avec des domaines enregistrés publiquement qui ne contiennent ni informations utilisateur ni symbole `@`.
Le tableau ci-dessous indique quels symboles d’une URL peuvent (`✔`) ou ne peuvent pas (`✗`) être analysés par les variantes `RFC` et non-`RFC` correspondantes :

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

les symboles marqués d’un `*` sont des sous-délimiteurs dans la RFC 3986 et sont autorisés dans les informations utilisateur après le symbole `@`.

Il existe deux types de fonctions d’URL :

* Les fonctions qui extraient des parties d’une URL. Si la partie concernée n’est pas présente dans l’URL, une chaîne vide est renvoyée.
* Les fonctions qui suppriment une partie d’une URL. Si l’URL ne contient rien de tel, elle reste inchangée.

<Note>
  Les fonctions ci-dessous sont générées à partir de la table système `system.functions`.
</Note>

{/*AUTOGENERATED_START*/}

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

Introduit dans : v1.1.0

Renvoie un tableau contenant l’URL, tronquée à la fin selon les symboles `/`, `?` et `#` présents dans le chemin et la chaîne de requête. Les caractères séparateurs consécutifs sont comptés comme un seul. Le résultat inclut le protocole et l’hôte comme premier élément, puis des chemins de plus en plus longs formant une hiérarchie.

**Syntaxe**

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

**Arguments**

* `url` — L’URL à traiter. [`String`](/fr/reference/data-types/string)

**Valeur renvoyée**

Renvoie un tableau d’URL de plus en plus longues formant une hiérarchie. [`Array(String)`](/fr/reference/data-types/array)

**Exemples**

**Utilisation de base**

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

Introduit dans : v1.1.0

Renvoie un tableau contenant la partie chemin de l’URL, tronquée à la fin par les symboles `/`, `?` et `#`. Contrairement à `URLHierarchy`, le résultat n’inclut ni le protocole ni l’hôte : il commence par le chemin. Les caractères séparateurs consécutifs sont comptés comme un seul.

**Syntaxe**

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

**Arguments**

* `url` — L’URL à traiter. [`String`](/fr/reference/data-types/string)

**Valeur renvoyée**

Renvoie un tableau de composants du chemin de l’URL, de plus en plus longs, formant une hiérarchie. [`Array(String)`](/fr/reference/data-types/array)

**Exemples**

**Utilisation de base**

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

Introduit dans : v1.1.0

Supprime l’identifiant de fragment d’une URL, y compris le signe dièse.

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Renvoie l’URL sans le fragment. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v1.1.0

Supprime la chaîne de requête, y compris le point d’interrogation, d’une URL.

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Renvoie l’URL sans la chaîne de requête. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v1.1.0

Supprime d’une URL la chaîne de requête et l’identifiant de fragment, y compris le point d’interrogation et le signe dièse.

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Renvoie l’URL sans la chaîne de requête ni l’identifiant de fragment. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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

Introduite dans : v1.1.0

Renvoie la partie du domaine qui comprend les sous-domaines de niveau supérieur jusqu’au [premier sous-domaine significatif](/fr/reference/functions/regular-functions/url-functions#firstSignificantSubdomain).

**Syntaxe**

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

**Arguments**

* `url` — URL ou chaîne de domaine sous forme de chaîne à traiter. [`String`](/fr/reference/data-types/string)

**Valeur renvoyée**

Renvoie la partie du domaine qui inclut les sous-domaines de premier niveau jusqu'au premier sous-domaine significatif, si possible ; sinon, renvoie une chaîne vide. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d'utilisation**

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

Introduit dans : v21.1.0

Renvoie la partie du domaine qui inclut les sous-domaines de niveau supérieur jusqu'au premier sous-domaine significatif. Accepte le nom d'une [liste de TLD](https://en.wikipedia.org/wiki/List_of_Internet_top-level_domains) personnalisée. Cette fonction peut être utile si vous avez besoin d'une liste de TLD à jour ou si vous disposez d'une liste personnalisée.

**Exemple de configuration**

```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: path is under top_level_domains_path -->
</top_level_domains_lists>
```

**Syntaxe**

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

**Arguments**

* `url` — URL ou chaîne de domaine à traiter. [`String`](/fr/reference/data-types/string)
* `tld_list_name` — Nom de la liste de TLD personnalisée configurée dans ClickHouse. [`const String`](/fr/reference/data-types/string)

**Valeur renvoyée**

Renvoie la partie du domaine qui inclut les sous-domaines de niveau supérieur, jusqu'au premier sous-domaine significatif. [`String`](/fr/reference/data-types/string)

**Exemples**

**Utilisation d'une liste de TLD personnalisée pour les domaines non standard**

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

Introduit dans : v22.10.0

Renvoie la partie du domaine qui comprend les sous-domaines de plus haut niveau jusqu’au premier sous-domaine significatif.
Accepte un nom personnalisé de [liste de TLD](https://en.wikipedia.org/wiki/List_of_Internet_top-level_domains).
Cette fonction peut être utile si vous avez besoin d’une liste de TLD récente ou si vous utilisez une liste personnalisée.
Semblable à [cutToFirstSignificantSubdomainCustom](#cutToFirstSignificantSubdomainCustom), mais conforme à la RFC 3986.

**Exemple de configuration**

```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>
    <!-- NOTE: path is under top_level_domains_path -->
</top_level_domains_lists>
```

**Syntaxe**

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

**Arguments**

* `url` — URL ou chaîne de domaine à traiter conformément à la RFC 3986. - `tld_list_name` — Nom de la liste de TLD personnalisée configurée dans ClickHouse.

**Valeur renvoyée**

Renvoie la partie du domaine qui comprend les sous-domaines de niveau supérieur jusqu’au premier sous-domaine significatif. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d'utilisation**

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

Introduit dans : v21.1.0

Renvoie la partie du domaine qui inclut les sous-domaines de plus haut niveau jusqu’au premier sous-domaine significatif, sans supprimer 'www'. Accepte le nom d’une liste de TLD personnalisée. Cela peut être utile si vous avez besoin d’une liste de TLD à jour ou si vous utilisez une liste personnalisée.

**Exemple de configuration**

````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: path is under top_level_domains_path -->
</top_level_domains_lists>
    

**Syntax**

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

**Arguments**

* `url` — URL ou chaîne de domaine à traiter. - `tld_list_name` — Nom de la liste de TLD personnalisée configurée dans ClickHouse.

**Valeur renvoyée**

Partie du domaine incluant les sous-domaines de plus haut niveau jusqu’au premier sous-domaine significatif, sans supprimer 'www'. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v22.10.0

Renvoie la partie du domaine qui inclut les sous-domaines de niveau supérieur jusqu’au premier sous-domaine significatif sans supprimer `www`.
Accepte le nom d’une liste TLD personnalisée.
Cela peut être utile si vous avez besoin d’une liste TLD à jour ou si vous disposez d’une liste personnalisée.
Semblable à [cutToFirstSignificantSubdomainCustomWithWWW](#cutToFirstSignificantSubdomainCustomWithWWW), mais conforme à la [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).

**Exemple de configuration**

````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>
    {/* NOTE: path is under top_level_domains_path */}
</top_level_domains_lists>
    

**Syntax**

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

**Arguments**

* `url` — URL ou chaîne de domaine à traiter conformément à la RFC 3986. - `tld_list_name` — Nom de la liste de TLD personnalisée configurée dans ClickHouse.

**Valeur renvoyée**

Renvoie la partie du domaine qui inclut les sous-domaines de niveau supérieur jusqu’au premier sous-domaine significatif, sans supprimer `www`. [`String`](/fr/reference/data-types/string)

**Exemples**

**Analyse RFC 3986 avec conservation de www et liste de TLD personnalisée**

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

Introduit dans : v22.10.0

Renvoyer la partie du domaine qui inclut les sous-domaines de niveau supérieur jusqu'au ["premier sous-domaine significatif"](/fr/reference/functions/regular-functions/url-functions#firstSignificantSubdomain). Semblable à [`cutToFirstSignificantSubdomain`](#cutToFirstSignificantSubdomain), mais conforme à la [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).

**Syntaxe**

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

**Arguments**

* `url` — URL ou chaîne de domaine à traiter conformément à la RFC 3986. [`String`](/fr/reference/data-types/string)

**Valeur renvoyée**

Renvoie la partie du domaine qui inclut les sous-domaines de niveau supérieur jusqu'au premier sous-domaine significatif, lorsque cela est possible ; sinon, renvoie une chaîne vide. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d'utilisation**

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

Introduit dans : v20.12.0

Renvoie la partie du domaine qui inclut les sous-domaines de niveau supérieur jusqu’au "premier sous-domaine significatif", sans supprimer '[www](http://www).'.

Semblable à [`cutToFirstSignificantSubdomain`](#cutToFirstSignificantSubdomain), mais conserve le préfixe '[www](http://www).' s’il est présent.

**Syntaxe**

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

**Arguments**

* `url` — URL ou chaîne de domaine à traiter. [`String`](/fr/reference/data-types/string)

**Valeur renvoyée**

Renvoie la partie du domaine qui comprend les sous-domaines de premier niveau jusqu'au premier sous-domaine significatif (y compris www) lorsque c'est possible ; sinon, renvoie une chaîne vide. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d'utilisation**

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

Introduit dans : v22.10.0

Renvoie la partie du domaine qui inclut les sous-domaines de niveau supérieur jusqu'au « premier sous-domaine significatif », sans supprimer 'www'. Similaire à [`cutToFirstSignificantSubdomainWithWWW`](#cutToFirstSignificantSubdomainWithWWW), mais conforme à la [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).

**Syntaxe**

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

**Arguments**

* `url` — URL ou chaîne de domaine à traiter conformément à la RFC 3986.

**Valeur renvoyée**

Renvoie la partie du domaine qui inclut les sous-domaines de niveau supérieur jusqu’au premier sous-domaine significatif (avec 'www') si possible ; sinon, renvoie une chaîne vide [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d'utilisation**

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

Introduit dans : v1.1.0

Supprime le paramètre `name` d’une URL, s’il est présent.
Cette fonction n’encode ni ne décode les caractères des noms de paramètres. Par exemple, `Client ID` et `Client%20ID` sont traités comme des noms de paramètres distincts.

**Syntaxe**

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

**Arguments**

* `url` — URL. [`String`](/fr/reference/data-types/string)
* `name` — Nom du paramètre de l’URL. [`String`](/fr/reference/data-types/string) ou [`Array(String)`](/fr/reference/data-types/array)

**Valeur renvoyée**

URL dont le paramètre `name` a été supprimé. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v1.1.0

Supprime le préfixe `www.` du domaine de l’URL, s’il est présent.

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Renvoie l’URL dont le domaine est dépourvu du préfixe `www.`. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v1.1.0

Prend en entrée une chaîne encodée dans une URL et la décode pour la restituer dans sa forme d’origine, lisible.

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Renvoie l’URL décodée. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v1.1.0

Décode les chaînes encodées dans l’URL selon les règles d’encodage des formulaires ([RFC-1866](https://www.rfc-editor.org/rfc/rfc1866.html)) : les signes `+` sont convertis en espaces et les caractères encodés en pourcentage sont décodés.

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Renvoie l’URL décodée. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v1.1.0

Extrait le nom d’hôte d’une URL.

L’URL peut être spécifiée avec ou sans protocole.

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Renvoie le nom d’hôte si la chaîne d’entrée peut être interprétée comme une URL, sinon une chaîne vide. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v22.10.0

Extrait le nom d’hôte d’une URL.
Similaire à [`domain`](#domain), mais conforme à la [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Renvoie le nom d’hôte si la chaîne d’entrée peut être interprétée comme une URL, sinon une chaîne vide. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v1.1.0

Renvoie le domaine d’une URL sans le `www.` initial, s’il est présent.

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Renvoie le nom de domaine si la chaîne d’entrée peut être interprétée comme une URL (sans le préfixe `www.`), sinon une chaîne vide. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v1.1.0

Renvoie le domaine sans le préfixe `www.` s’il est présent. Similaire à [`domainWithoutWWW`](#domainWithoutWWW), mais conforme à la [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Renvoie le nom de domaine si la chaîne d'entrée peut être analysée comme une URL (sans `www.` au début), sinon une chaîne vide. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d'utilisation**

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

Introduit dans : v22.3.0

Prend une chaîne classique et la convertit au format encodé pour les URL (encodage en pourcentage), dans lequel les caractères spéciaux sont remplacés par leurs équivalents encodés en pourcentage.

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Renvoie l’URL encodée. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v22.3.0

Encode les chaînes selon les règles d’encodage des formulaires ([RFC-1866](https://www.rfc-editor.org/rfc/rfc1866.html)), où les espaces sont convertis en signes + et les caractères spéciaux sont encodés en pourcentage.

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Renvoie l’URL encodée. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v1.1.0

Renvoyer la valeur du paramètre `name` dans l’URL, s’il est présent ; sinon, une chaîne vide est renvoyée.
S’il existe plusieurs paramètres portant ce nom, la première occurrence est renvoyée.
La fonction suppose que le paramètre dans `url` est encodé de la même manière que l’argument `name`.

**Syntaxe**

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

**Arguments**

* `url` — URL. [`String`](/fr/reference/data-types/string)
* `name` — Nom du paramètre. [`String`](/fr/reference/data-types/string)

**Valeur renvoyée**

Renvoie la valeur du paramètre d’URL du nom spécifié. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v1.1.0

Renvoie un tableau de chaînes contenant les noms des paramètres d’URL.
Les valeurs ne sont pas décodées.

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Renvoie un tableau de chaînes correspondant aux noms des paramètres d’URL. [`Array(String)`](/fr/reference/data-types/array)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v1.1.0

Renvoie un tableau de chaînes `name=value` correspondant aux paramètres d’URL.
Les valeurs ne sont pas décodées.

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Tableau de chaînes `name=value` correspondant aux paramètres d’URL. [`Array(String)`](/fr/reference/data-types/array)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v1.1.0

Renvoie le « premier sous-domaine significatif ».

Le « premier sous-domaine significatif » est un domaine de deuxième niveau s’il s’agit de « com », « net », « org » ou « co ».
Sinon, il s’agit d’un domaine de troisième niveau.

Par exemple, 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 liste des domaines de deuxième niveau « non significatifs » et d’autres détails d’implémentation peuvent changer à l’avenir.

**Syntaxe**

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

**Arguments**

* Aucun.

**Valeur renvoyée**

**Exemples**

**firstSignificantSubdomain**

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

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

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

Introduit dans : v21.1.0

Renvoie le premier sous-domaine significatif d’une URL à l’aide d’une liste personnalisée de TLD (Top-Level Domain). Le nom de cette liste personnalisée de TLD désigne une configuration qui définit quels suffixes de domaine doivent être traités comme des domaines de premier niveau. Cela est utile pour les hiérarchies de TLD non standard. La fonction utilise un algorithme simplifié d’analyse d’URL, en supposant que le protocole et tout ce qui suit ont été supprimés.

**Syntaxe**

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

**Arguments**

* `url` — L’URL dont extraire le sous-domaine. [`String`](/fr/reference/data-types/string)
* `tld_list_name` — Nom de la liste de TLD personnalisée définie dans la configuration. [`String`](/fr/reference/data-types/string)

**Valeur renvoyée**

Renvoie le premier sous-domaine significatif. [`String`](/fr/reference/data-types/string)

**Exemples**

**Utilisation de base**

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

Introduit dans : v22.10.0

Semblable à `firstSignificantSubdomainCustom`, mais utilise une analyse d’URL conforme à la RFC 3986 plutôt que l’algorithme simplifié.

**Syntaxe**

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

**Arguments**

* `url` — L’URL à partir de laquelle extraire le sous-domaine. [`String`](/fr/reference/data-types/string)
* `tld_list_name` — Nom de la liste de TLD personnalisée définie dans la configuration. [`String`](/fr/reference/data-types/string)

**Valeur renvoyée**

Renvoie le premier sous-domaine significatif. [`String`](/fr/reference/data-types/string)

**Exemples**

**Utilisation de base**

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

Introduit dans : v22.10.0

Renvoie le "premier sous-domaine significatif" conformément à la RFC 1034.

**Syntaxe**

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

**Arguments**

* Aucun.

**Valeur renvoyée**

**Exemples**

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

Introduit dans : v1.1.0

Renvoie l’identifiant de fragment sans le caractère # initial.

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Renvoie l’identifiant de fragment sans le caractère `#` initial. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v20.5.0

Extrait l’emplacement réseau (`username:password@host:port`) d’une URL.

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Renvoie `username:password@host:port` à partir de l’URL donnée. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v1.1.0

Renvoie le chemin d’une URL, sans la chaîne de requête.

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Renvoie le chemin de l’URL sans chaîne de requête. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v1.1.0

Comme [`path`](#path), mais inclut la chaîne de requête et le fragment de l’URL.

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Renvoie le chemin de l’URL, y compris la chaîne de requête et le fragment. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v20.5.0

Renvoie le port d’une URL, ou `default_port` si l’URL ne contient pas de port ou si elle ne peut pas être analysée.

**Syntaxe**

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

**Arguments**

* `url` — URL. [`String`](/fr/reference/data-types/string)
* `default_port` — Facultatif. Numéro de port par défaut à renvoyer. `0` par défaut. [`UInt16`](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie le port de l’URL, ou le port par défaut si l’URL ne contient pas de port ou en cas d’erreur de validation. [`UInt16`](/fr/reference/data-types/int-uint)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v22.10.0

Renvoie le port ou `default_port` si l’URL ne contient pas de port ou ne peut pas être analysée.
Semblable à [`port`](#port), mais conforme à la [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).

**Syntaxe**

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

**Arguments**

* `url` — URL. [`String`](/fr/reference/data-types/string)
* `default_port` — Facultatif. Le numéro de port par défaut à renvoyer. `0` par défaut. [`UInt16`](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie le port, ou le port par défaut s'il n'y a pas de port dans l'URL ou en cas d'erreur de validation. [`UInt16`](/fr/reference/data-types/int-uint)

**Exemples**

**Exemple d'utilisation**

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

Introduit dans : v1.1.0

Extrait le protocole d’une URL.

Exemples de valeurs renvoyées : http, https, ftp, mailto, tel, magnet.

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Renvoye le protocole de l’URL, ou une chaîne vide s’il ne peut pas être déterminé. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v1.1.0

Renvoie la chaîne de requête d’une URL, sans le point d’interrogation initial, ni `#`, ni ce qui suit `#`.

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Renvoie la chaîne de requête de l’URL sans le point d’interrogation initial ni le fragment. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v1.1.0

Renvoie la chaîne de requête et l’identifiant de fragment d’une URL.

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Renvoie la chaîne de requête et l’identifiant de fragment de l’URL. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v1.1.0

Extrait le domaine de premier niveau d’une URL.

<Note>
  L’URL peut être spécifiée avec ou sans protocole.
  Par exemple :

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

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Renvoie le nom de domaine si la chaîne d’entrée peut être interprétée comme une URL. Sinon, une chaîne vide. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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

Introduit dans : v22.10.0

Extrait le domaine de premier niveau d’une URL.
Similaire à [`topLevelDomain`](#topLevelDomain), mais conforme à la [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986).

**Syntaxe**

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

**Arguments**

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

**Valeur renvoyée**

Nom de domaine si la chaîne d’entrée peut être interprétée comme une URL. Sinon, une chaîne vide. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

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