> ## 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 des adresses IPv4 et IPv6.

# Fonctions permettant de manipuler des adresses IPv4 et IPv6

{/*AUTOGENERATED_START*/}

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

Introduit dans : v20.1.0

Prend une adresse IPv4 et la longueur de son préfixe CIDR (Classless Inter-Domain Routing), et renvoie la plage d’adresses du sous-réseau sous la forme d’un tuple de deux valeurs IPv4 : la première et la dernière adresse de ce sous-réseau.
Pour la version IPv6, voir [`IPv6CIDRToRange`](#IPv4CIDRToRange).

**Syntaxe**

```sql theme={null}
IPv4CIDRToRange(ipv4, cidr)
```

**Arguments**

* `ipv4` — Adresse IPv4. [`IPv4`](/fr/reference/data-types/ipv4) ou [`String`](/fr/reference/data-types/string)
* `cidr` — Valeur CIDR. [`UInt8`](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie un tuple contenant deux adresses IPv4 représentant la plage d’adresses du sous-réseau. [`Tuple(IPv4, IPv4)`](/fr/reference/data-types/tuple)

**Exemples**

**Exemple d’utilisation**

```sql title=Query theme={null}
SELECT IPv4CIDRToRange(toIPv4('192.168.5.2'), 16);
```

```response title=Response theme={null}
┌─IPv4CIDRToRange(toIPv4('192.168.5.2'), 16)─┐
│ ('192.168.0.0','192.168.255.255')          │
└────────────────────────────────────────────┘
```

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

Introduite dans : v1.1.0

Convertit un entier de 32 bits en sa représentation sous forme de chaîne d’adresse IPv4 en notation décimale pointée (format A.B.C.D).
Interprète l’entrée selon l’ordre des octets big-endian.

**Syntaxe**

```sql theme={null}
IPv4NumToString(num)
```

**Alias** : `INET_NTOA`

**Arguments**

* `num` — adresse IPv4 sous la forme d’un nombre UInt32. [`UInt32`](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie un nombre représentant l’adresse MAC, ou `0` si le format n’est pas valide. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

```sql title=Query theme={null}
IPv4NumToString(3232235521)
```

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

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

Introduit dans : v1.1.0

Convertit un entier de 32 bits en sa représentation textuelle d'adresse IPv4 en notation décimale pointée (format A.B.C.D),
similaire à [`IPv4NumToString`](#IPv4NumToString), mais en utilisant `xxx` à la place du dernier octet.

**Syntaxe**

```sql theme={null}
IPv4NumToStringClassC(num)
```

**Arguments**

* `num` — Adresse IPv4 représentée sous forme de nombre UInt32. [`UInt32`](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie la chaîne représentant l’adresse IPv4, où xxx remplace le dernier octet. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple de base avec agrégation**

```sql title=Query theme={null}
SELECT
    IPv4NumToStringClassC(ClientIP) AS k,
    count() AS c
FROM test.hits
GROUP BY k
ORDER BY c DESC
LIMIT 10
```

```response title=Response theme={null}
┌─k──────────────┬─────c─┐
│ 83.149.9.xxx   │ 26238 │
│ 217.118.81.xxx │ 26074 │
│ 213.87.129.xxx │ 25481 │
│ 83.149.8.xxx   │ 24984 │
│ 217.118.83.xxx │ 22797 │
│ 78.25.120.xxx  │ 22354 │
│ 213.87.131.xxx │ 21285 │
│ 78.25.121.xxx  │ 20887 │
│ 188.162.65.xxx │ 19694 │
│ 83.149.48.xxx  │ 17406 │
└────────────────┴───────┘
```

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

Introduit dans : v1.1.0

Convertit une chaîne d’adresse IPv4 en notation décimale pointée (format A.B.C.D) en sa représentation entière correspondante sur 32 bits. (L’inverse de [`IPv4NumToString`](#IPv4NumToString)).
Si l’adresse IPv4 n’est pas dans un format valide, une exception est levée.

**Syntaxe**

```sql theme={null}
IPv4StringToNum(string)
```

**Alias** : `INET_ATON`

**Arguments**

* `string` — chaîne contenant une adresse IPv4. [`String`](/fr/reference/data-types/string)

**Valeur renvoyée**

Renvoie l’adresse IPv4. [`UInt32`](/fr/reference/data-types/int-uint)

**Exemples**

**Exemple d’utilisation**

```sql title=Query theme={null}
IPv4StringToNum('192.168.0.1')
```

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

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

Introduit dans : v22.3.0

Convertit une chaîne d’adresse IPv4 en notation décimale pointée (format A.B.C.D) en sa représentation sous forme d’entier 32 bits correspondante. Si l’adresse IPv4 n’a pas un format valide, renvoie `0`.

**Syntaxe**

```sql theme={null}
IPv4StringToNumOrDefault(string)
```

**Arguments**

* `string` — chaîne contenant une adresse IPv4. [`String`](/fr/reference/data-types/string)

**Valeur renvoyée**

Renvoie l’adresse IPv4, ou `0` si elle est invalide. [`UInt32`](/fr/reference/data-types/int-uint)

**Exemples**

**Exemple avec une adresse invalide**

```sql title=Query theme={null}
SELECT
    IPv4StringToNumOrDefault('127.0.0.1') AS valid,
    IPv4StringToNumOrDefault('invalid') AS invalid;
```

```response title=Response theme={null}
┌──────valid─┬─invalid─┐
│ 2130706433 │       0 │
└────────────┴─────────┘
```

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

Introduit dans : v22.3.0

Convertit un entier 32 bits en sa représentation sous forme de chaîne d’adresse IPv4 en notation décimale pointée (format A.B.C.D), mais si l’adresse IPv4 a un format invalide, renvoie `NULL`.

**Syntaxe**

```sql theme={null}
IPv4StringToNumOrNull(string)
```

**Arguments**

* `string` — chaîne contenant une adresse IPv4. [`String`](/fr/reference/data-types/string)

**Valeur renvoyée**

Renvoie l’adresse IPv4, ou `NULL` si elle est invalide. [`Nullable(UInt32)`](/fr/reference/data-types/nullable)

**Exemples**

**Exemple avec une adresse invalide**

```sql title=Query theme={null}
SELECT
IPv4StringToNumOrNull('127.0.0.1') AS valid,
IPv4StringToNumOrNull('invalid') AS invalid;
```

```response title=Response theme={null}
┌──────valid─┬─invalid─┐
│ 2130706433 │    ᴺᵁᴸᴸ │
└────────────┴─────────┘
```

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

Introduit dans : v1.1.0

Interprète un nombre 32 bits (big endian) comme une adresse IPv4, puis l’interprète comme l’adresse IPv6 correspondante au format `FixedString(16)`.

**Syntaxe**

```sql theme={null}
IPv4ToIPv6(x)
```

**Arguments**

* `x` — adresse IPv4. [`UInt32`](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie une adresse IPv6 au format binaire. [`FixedString(16)`](/fr/reference/data-types/fixedstring)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
SELECT IPv6NumToString(IPv4ToIPv6(IPv4StringToNum('192.168.0.1'))) AS addr;
```

```response title=Response theme={null}
┌─addr───────────────┐
│ ::ffff:192.168.0.1 │
└────────────────────┘
```

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

Introduit dans : v20.1.0

Prend une adresse IPv6 avec la longueur de son préfixe Classless Inter-Domain Routing (CIDR) et renvoie la plage d’adresses du sous-réseau sous la forme d’un Tuple de deux valeurs IPv6 : l’adresse la plus basse et la plus haute de ce sous-réseau.
Pour la version IPv4, voir [`IPv4CIDRToRange`](#IPv4CIDRToRange).

**Syntaxe**

```sql theme={null}
IPv6CIDRToRange(ipv6, cidr)
```

**Arguments**

* `ipv6` — adresse IPv6. [`IPv6`](/fr/reference/data-types/ipv6) ou [`String`](/fr/reference/data-types/string)
* `cidr` — valeur CIDR. [`UInt8`](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie un tuple de deux adresses IPv6 représentant la plage du sous-réseau. [`Tuple(IPv6, IPv6)`](/fr/reference/data-types/tuple)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
SELECT IPv6CIDRToRange(toIPv6('2001:0db8:0000:85a3:0000:0000:ac1f:8001'), 32);
```

```response title=Response theme={null}
┌─IPv6CIDRToRange(toIPv6('2001:0db8:0000:85a3:0000:0000:ac1f:8001'), 32)─┐
│ ('2001:db8::','2001:db8:ffff:ffff:ffff:ffff:ffff:ffff')                │
└────────────────────────────────────────────────────────────────────────┘
```

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

Introduit dans : v1.1.0

Convertit une adresse IPv6 du format binaire (FixedString(16)) en sa représentation textuelle standard.
Les adresses IPv6 mappées sur IPv4 sont affichées au format `::ffff:111.222.33.44`.

**Syntaxe**

```sql theme={null}
IPv6NumToString(x)
```

**Alias** : `INET6_NTOA`

**Arguments**

* `x` — adresse IPv6 au format binaire. [`FixedString(16)`](/fr/reference/data-types/fixedstring) ou [`IPv6`](/fr/reference/data-types/ipv6)

**Valeur renvoyée**

Renvoie la chaîne de l'adresse IPv6 au format texte. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
SELECT IPv6NumToString(toFixedString(unhex('2A0206B8000000000000000000000011'), 16)) AS addr;
```

```response title=Response theme={null}
┌─addr─────────┐
│ 2a02:6b8::11 │
└──────────────┘
```

**Analyse IPv6 avec la table hits**

```sql title=Query theme={null}
SELECT
    IPv6NumToString(ClientIP6 AS k),
    count() AS c
FROM hits_all
WHERE EventDate = today() AND substring(ClientIP6, 1, 12) != unhex('00000000000000000000FFFF')
GROUP BY k
ORDER BY c DESC
LIMIT 10
```

```response title=Response theme={null}
┌─IPv6NumToString(ClientIP6)──────────────┬─────c─┐
│ 2a02:2168:aaa:bbbb::2                   │ 24695 │
│ 2a02:2698:abcd:abcd:abcd:abcd:8888:5555 │ 22408 │
│ 2a02:6b8:0:fff::ff                      │ 16389 │
│ 2a01:4f8:111:6666::2                    │ 16016 │
│ 2a02:2168:888:222::1                    │ 15896 │
│ 2a01:7e00::ffff:ffff:ffff:222           │ 14774 │
│ 2a02:8109:eee:ee:eeee:eeee:eeee:eeee    │ 14443 │
│ 2a02:810b:8888:888:8888:8888:8888:8888  │ 14345 │
│ 2a02:6b8:0:444:4444:4444:4444:4444      │ 14279 │
│ 2a01:7e00::ffff:ffff:ffff:ffff          │ 13880 │
└─────────────────────────────────────────┴───────┘
```

**Adresses IPv4 mappées sur IPv6**

```sql title=Query theme={null}
SELECT
    IPv6NumToString(ClientIP6 AS k),
    count() AS c
FROM hits_all
WHERE EventDate = today()
GROUP BY k
ORDER BY c DESC
LIMIT 10
```

```response title=Response theme={null}
┌─IPv6NumToString(ClientIP6)─┬──────c─┐
│ ::ffff:94.26.111.111       │ 747440 │
│ ::ffff:37.143.222.4        │ 529483 │
│ ::ffff:5.166.111.99        │ 317707 │
│ ::ffff:46.38.11.77         │ 263086 │
│ ::ffff:79.105.111.111      │ 186611 │
│ ::ffff:93.92.111.88        │ 176773 │
│ ::ffff:84.53.111.33        │ 158709 │
│ ::ffff:217.118.11.22       │ 154004 │
│ ::ffff:217.118.11.33       │ 148449 │
│ ::ffff:217.118.11.44       │ 148243 │
└────────────────────────────┴────────┘
```

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

Introduit dans : v1.1.0

Convertit une adresse IPv6 de sa représentation textuelle standard en format binaire (`FixedString(16)`).
Accepte les adresse IPv6 mappée sur IPv4 au format `::ffff:111.222.33.44.`.
Si l’adresse IPv6 est dans un format invalide, une exception est levée.

Si la chaîne d’entrée contient une adresse IPv4 valide, renvoie son équivalent IPv6.
HEX peut être en majuscules ou en minuscules.

**Syntaxe**

```sql theme={null}
IPv6StringToNum(string)
```

**Alias** : `INET6_ATON`

**Arguments**

* `string` — Chaîne d’adresse IPv6. [`String`](/fr/reference/data-types/string)

**Valeur renvoyée**

Renvoie l’adresse IPv6 au format binaire. [`FixedString(16)`](/fr/reference/data-types/fixedstring)

**Exemples**

**Exemple de base**

```sql title=Query theme={null}
SELECT addr, cutIPv6(IPv6StringToNum(addr), 0, 0) FROM (SELECT ['notaddress', '127.0.0.1', '1111::ffff'] AS addr) ARRAY JOIN addr;
```

```response title=Response theme={null}
┌─addr───────┬─cutIPv6(IPv6StringToNum(addr), 0, 0)─┐
│ notaddress │ ::                                   │
│ 127.0.0.1  │ ::ffff:127.0.0.1                     │
│ 1111::ffff │ 1111::ffff                           │
└────────────┴──────────────────────────────────────┘
```

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

Introduit dans : v22.3.0

Convertit une adresse IPv6 de sa représentation textuelle standard au format binaire (`FixedString(16)`).
Accepte les adresse IPv6 mappée sur IPv4 au format `::ffff:111.222.33.44.`.
Si l'adresse IPv6 n'est pas dans un format valide, elle renvoie la valeur par défaut `::`.

**Syntaxe**

```sql theme={null}
IPv6StringToNumOrDefault(string)
```

**Arguments**

* `string` — chaîne représentant une adresse IPv6. [`String`](/fr/reference/data-types/string)

**Valeur renvoyée**

Adresse IPv6 au format binaire, ou `FixedString(16)` rempli de zéros si l’adresse n’est pas valide. [`FixedString(16)`](/fr/reference/data-types/fixedstring)

**Exemples**

**Exemple de base avec une adresse invalide**

```sql title=Query theme={null}
SELECT
    IPv6NumToString(IPv6StringToNumOrDefault('2001:db8::1')) AS valid,
    IPv6NumToString(IPv6StringToNumOrDefault('invalid')) AS invalid;
```

```response title=Response theme={null}
┌─valid───────┬─invalid─┐
│ 2001:db8::1 │ ::      │
└─────────────┴─────────┘
```

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

Introduit dans : v22.3.0

Convertit une adresse IPv6 de sa représentation textuelle standard en format binaire (`FixedString(16)`).
Accepte les adresses IPv6 mappées sur IPv4 au format `::ffff:111.222.33.44.`.
Si le format de l’adresse IPv6 n’est pas valide, renvoie `NULL`.

**Syntaxe**

```sql theme={null}
IPv6StringToNumOrNull(string)
```

**Arguments**

* `string` — Chaîne représentant une adresse IPv6. [`String`](/fr/reference/data-types/string)

**Valeur renvoyée**

Renvoie l’adresse IPv6 au format binaire, ou `NULL` si elle n’est pas valide. [`Nullable(FixedString(16))`](/fr/reference/data-types/nullable)

**Exemples**

**Exemple simple avec une adresse non valide**

```sql title=Query theme={null}
SELECT
    IPv6NumToString(IPv6StringToNumOrNull('2001:db8::1')) AS valid,
    IPv6StringToNumOrNull('invalid') AS invalid;
```

```response title=Response theme={null}
┌─valid───────┬─invalid─┐
│ 2001:db8::1 │    ᴺᵁᴸᴸ │
└─────────────┴─────────┘
```

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

Introduit dans : v1.1.0

Accepte une valeur `FixedString(16)` contenant l’adresse IPv6 au format binaire.
Renvoie une chaîne contenant l’adresse après suppression du nombre d’octets spécifié, au format texte.

**Syntaxe**

```sql theme={null}
cutIPv6(x, bytesToCutForIPv6, bytesToCutForIPv4)
```

**Arguments**

* `x` — adresse IPv6 au format binaire. [`FixedString(16)`](/fr/reference/data-types/fixedstring) ou [`IPv6`](/fr/reference/data-types/ipv6)
* `bytesToCutForIPv6` — nombre d’octets à supprimer pour IPv6. [`UInt8`](/fr/reference/data-types/int-uint)
* `bytesToCutForIPv4` — nombre d’octets à supprimer pour IPv4. [`UInt8`](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie une chaîne contenant l’adresse IPv6 au format texte après suppression des octets spécifiés. [`String`](/fr/reference/data-types/string)

**Exemples**

**Exemple d’utilisation**

```sql title=Query theme={null}
WITH
    IPv6StringToNum('2001:0DB8:AC10:FE01:FEED:BABE:CAFE:F00D') AS ipv6,
    IPv4ToIPv6(IPv4StringToNum('192.168.0.1')) AS ipv4
SELECT
    cutIPv6(ipv6, 2, 0),
    cutIPv6(ipv4, 0, 2)
```

```response title=Response theme={null}
┌─cutIPv6(ipv6, 2, 0)─────────────────┬─cutIPv6(ipv4, 0, 2)─┐
│ 2001:db8:ac10:fe01:feed:babe:cafe:0 │ ::ffff:192.168.0.0  │
└─────────────────────────────────────┴─────────────────────┘
```

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

Introduit dans : v21.4.0

Détermine si une adresse IP appartient à un réseau représenté au format [Classless Inter-Domain Routing (CIDR)](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing).

Cette fonction accepte les adresses IPv4 et IPv6 (ainsi que les réseaux) représentées sous forme de chaînes. Elle renvoie `0` si la version IP de l’adresse et celle du CIDR ne correspondent pas.

**Syntaxe**

```sql theme={null}
isIPAddressInRange(address, prefix)
```

**Arguments**

* `address` — Une adresse IPv4 ou IPv6. [`String`](/fr/reference/data-types/string)
* `prefix` — Un préfixe réseau IPv4 ou IPv6 au format CIDR. [`String`](/fr/reference/data-types/string)

**Valeur renvoyée**

Renvoie `1` si la version IP de l’adresse et celle du CIDR correspondent, sinon `0`. [`UInt8`](/fr/reference/data-types/int-uint)

**Exemples**

**Adresse IPv4 comprise dans la plage**

```sql title=Query theme={null}
SELECT isIPAddressInRange('127.0.0.1', '127.0.0.0/8')
```

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

**Adresse IPv4 en dehors de la plage**

```sql title=Query theme={null}
SELECT isIPAddressInRange('127.0.0.1', 'ffff::/16')
```

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

**Adresse IPv6 en dehors de la plage**

```sql title=Query theme={null}
SELECT isIPAddressInRange('::ffff:192.168.0.1', '::ffff:192.168.0.4/128')
```

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

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

Introduit dans : v21.1.0

Détermine si la chaîne d'entrée est ou non une adresse IPv4.
Pour la version IPv6, voir [`isIPv6String`](#isIPv6String).

**Syntaxe**

```sql theme={null}
isIPv4String(string)
```

**Arguments**

* `string` — Chaîne représentant l’adresse IP à vérifier. [`String`](/fr/reference/data-types/string)

**Valeur renvoyée**

Renvoie `1` si `string` est une adresse IPv4, sinon `0`. [`UInt8`](/fr/reference/data-types/int-uint)

**Exemples**

**Exemple d’utilisation**

```sql title=Query theme={null}
SELECT addr, isIPv4String(addr)
FROM(
SELECT ['0.0.0.0', '127.0.0.1', '::ffff:127.0.0.1'] AS addr
)
ARRAY JOIN addr;
```

```response title=Response theme={null}
┌─addr─────────────┬─isIPv4String(addr)─┐
│ 0.0.0.0          │                  1 │
│ 127.0.0.1        │                  1 │
│ ::ffff:127.0.0.1 │                  0 │
└──────────────────┴────────────────────┘
```

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

Introduit dans : v21.1.0

Détermine si la chaîne d’entrée est ou non une adresse IPv6.
Pour la version IPv4, voir [`isIPv4String`](#isIPv4String).

**Syntaxe**

```sql theme={null}
isIPv6String(string)
```

**Arguments**

* `string` — Chaîne contenant l’adresse IP à vérifier. [`String`](/fr/reference/data-types/string)

**Valeur renvoyée**

Renvoie `1` si `string` est une adresse IPv6, sinon `0`. [`UInt8`](/fr/reference/data-types/int-uint)

**Exemples**

**Exemple d’utilisation**

```sql title=Query theme={null}
SELECT addr, isIPv6String(addr)
FROM(SELECT ['::', '1111::ffff', '::ffff:127.0.0.1', '127.0.0.1'] AS addr)
ARRAY JOIN addr;
```

```response title=Response theme={null}
┌─addr─────────────┬─isIPv6String(addr)─┐
│ ::               │                  1 │
│ 1111::ffff       │                  1 │
│ ::ffff:127.0.0.1 │                  1 │
│ 127.0.0.1        │                  0 │
└──────────────────┴────────────────────┘
```

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

Introduit dans : v20.1.0

Convertit une chaîne ou une adresse IPv4 sous forme de UInt32 en type IPv4.
Cette fonction est similaire aux fonctions [`IPv4StringToNum`](/fr/reference/functions/regular-functions/ip-address-functions#IPv4StringToNum) et [`IPv4NumToString`](/fr/reference/functions/regular-functions/ip-address-functions#IPv4NumToString), mais elle prend en charge à la fois les types de données chaîne et entier non signé en arguments d'entrée.

**Syntaxe**

```sql theme={null}
toIPv4(x)
```

**Arguments**

* `x` — Une adresse IPv4 [`String`](/fr/reference/data-types/string) ou [`UInt8/16/32`](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie une adresse IPv4. [`IPv4`](/fr/reference/data-types/ipv4)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
SELECT toIPv4('171.225.130.45');
```

```response title=Response theme={null}
┌─toIPv4('171.225.130.45')─┐
│ 171.225.130.45           │
└──────────────────────────┘
```

**Comparaison avec les fonctions IPv4StringToNum et IPv4NumToString.**

```sql title=Query theme={null}
WITH
    '171.225.130.45' AS IPv4_string
SELECT
    hex(IPv4StringToNum(IPv4_string)),
    hex(toIPv4(IPv4_string))
```

```response title=Response theme={null}
┌─hex(IPv4StringToNum(IPv4_string))─┬─hex(toIPv4(IPv4_string))─┐
│ ABE1822D                          │ ABE1822D                 │
└───────────────────────────────────┴──────────────────────────┘
```

**Conversion d’un entier**

```sql title=Query theme={null}
SELECT toIPv4(2130706433);
```

```response title=Response theme={null}
┌─toIPv4(2130706433)─┐
│ 127.0.0.1          │
└────────────────────┘
```

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

Introduit dans : v22.3.0

Convertit une chaîne ou une valeur UInt32 représentant une adresse IPv4 en type [`IPv4`](/fr/reference/data-types/ipv4).
Si l'adresse IPv4 a un format invalide, la fonction renvoie `0.0.0.0` (IPv4 0) ou la valeur IPv4 par défaut fournie.

**Syntaxe**

```sql theme={null}
toIPv4OrDefault(string[, default])
```

**Arguments**

* `string` — Chaîne contenant l'adresse IP à convertir. [`String`](/fr/reference/data-types/string)
* `default` — Facultatif. Valeur à renvoyer si la chaîne n'est pas une adresse IPv4 valide. [`IPv4`](/fr/reference/data-types/ipv4)

**Valeur renvoyée**

Renvoie une adresse IPv4 obtenue à partir de la chaîne, ou la valeur par défaut si la conversion échoue. [`IPv4`](/fr/reference/data-types/ipv4)

**Exemples**

**Chaînes IPv4 valides et non valides**

```sql title=Query theme={null}
WITH
    '192.168.1.1' AS valid_IPv4_string,
    '999.999.999.999' AS invalid_IPv4_string,
    'not_an_ip' AS malformed_string
SELECT
    toIPv4OrDefault(valid_IPv4_string) AS valid,
    toIPv4OrDefault(invalid_IPv4_string) AS default_value,
    toIPv4OrDefault(malformed_string, toIPv4('8.8.8.8')) AS provided_default;
```

```response title=Response theme={null}
┌─valid─────────┬─default_value─┬─provided_default─┐
│ 192.168.1.1   │ 0.0.0.0       │ 8.8.8.8          │
└───────────────┴───────────────┴──────────────────┘
```

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

Introduit dans : v22.3.0

Convertit une valeur d’entrée en une valeur de type `IPv4`, mais renvoie `NULL` en cas d’erreur.
Comme [`toIPv4`](#toIPv4), mais renvoie `NULL` au lieu de lever une exception en cas d’erreur de conversion.

Arguments pris en charge :

* Représentations sous forme de chaîne d’adresses IPv4 en notation décimale pointée.
* Représentations entières d’adresses IPv4.

Arguments non pris en charge (renvoient `NULL`) :

* Formats d’adresse IP non valides.
* Adresses IPv6.
* Valeurs hors plage.
* Adresses mal formées.

**Syntaxe**

```sql theme={null}
toIPv4OrNull(x)
```

**Arguments**

* `x` — Une représentation d'une adresse IPv4 sous forme de chaîne ou d'entier. [`String`](/fr/reference/data-types/string) ou [`Integer`](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie une adresse IPv4 en cas de succès, sinon `NULL`. [`IPv4`](/fr/reference/data-types/ipv4) ou [`NULL`](/fr/reference/syntax#null)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
SELECT
    toIPv4OrNull('192.168.1.1') AS valid_ip,
    toIPv4OrNull('invalid.ip') AS invalid_ip
```

```response title=Response theme={null}
┌─valid_ip────┬─invalid_ip─┐
│ 192.168.1.1 │       ᴺᵁᴸᴸ │
└─────────────┴────────────┘
```

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

Introduit dans : v23.1.0

Convertit une valeur d’entrée en une valeur de type [IPv4](/fr/reference/data-types/ipv4), mais renvoie l’adresse IPv4 nulle en cas d’erreur.
Comme [`toIPv4`](#toIPv4), mais renvoie l’adresse IPv4 nulle (`0.0.0.0`) au lieu de lever une exception en cas d’erreur de conversion.

Arguments pris en charge :

* Représentations sous forme de chaînes d’adresses IPv4 en notation décimale pointée.
* Représentations entières d’adresses IPv4.

Arguments non pris en charge (renvoie l’adresse IPv4 nulle) :

* Formats d’adresse IP non valides.
* Adresses IPv6.
* Valeurs hors plage.

**Syntaxe**

```sql theme={null}
toIPv4OrZero(x)
```

**Arguments**

* `x` — Une représentation d'une adresse IPv4 sous forme de chaîne ou d'entier. [`String`](/fr/reference/data-types/string) ou [`Integer`](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie une adresse IPv4 en cas de succès ; sinon, l'adresse IPv4 nulle (`0.0.0.0`). [`IPv4`](/fr/reference/data-types/ipv4)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
SELECT
    toIPv4OrZero('192.168.1.1') AS valid_ip,
    toIPv4OrZero('invalid.ip') AS invalid_ip
```

```response title=Response theme={null}
┌─valid_ip────┬─invalid_ip─┐
│ 192.168.1.1 │ 0.0.0.0    │
└─────────────┴────────────┘
```

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

Introduit dans : v20.1.0

Convertit une chaîne ou une adresse IPv6 au format `UInt128` vers le type [`IPv6`](/fr/reference/data-types/ipv6).
Pour les chaînes, si l’adresse IPv6 a un format invalide, renvoie une valeur vide.
Semblable aux fonctions [`IPv6StringToNum`](/fr/reference/functions/regular-functions/ip-address-functions#IPv6StringToNum) et [`IPv6NumToString`](/fr/reference/functions/regular-functions/ip-address-functions#IPv6NumToString), qui convertissent une adresse IPv6 depuis et vers le format binaire (c.-à-d. `FixedString(16)`).

Si la chaîne d’entrée contient une adresse IPv4 valide, l’équivalent IPv6 de cette adresse IPv4 est renvoyé.

**Syntaxe**

```sql theme={null}
toIPv6(x)
```

**Arguments**

* `x` — Une adresse IP. [`String`](/fr/reference/data-types/string) ou [`UInt128`](/fr/reference/data-types/int-uint)

**Valeur renvoyée**

Renvoie une adresse IPv6. [`IPv6`](/fr/reference/data-types/ipv6)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
WITH '2001:438:ffff::407d:1bc1' AS IPv6_string
SELECT
    hex(IPv6StringToNum(IPv6_string)),
    hex(toIPv6(IPv6_string));
```

```response title=Response theme={null}
┌─hex(IPv6StringToNum(IPv6_string))─┬─hex(toIPv6(IPv6_string))─────────┐
│ 20010438FFFF000000000000407D1BC1  │ 20010438FFFF000000000000407D1BC1 │
└───────────────────────────────────┴──────────────────────────────────┘
```

**Correspondance IPv4-IPv6**

```sql title=Query theme={null}
SELECT toIPv6('127.0.0.1');
```

```response title=Response theme={null}
┌─toIPv6('127.0.0.1')─┐
│ ::ffff:127.0.0.1    │
└─────────────────────┘
```

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

Introduit dans : v22.3.0

Convertit une chaîne ou une valeur UInt128 représentant une adresse IPv6 en type [`IPv6`](/fr/reference/data-types/ipv6).
Si l'adresse IPv6 a un format non valide, la fonction renvoie `::` (IPv6 0) ou l'adresse IPv6 par défaut fournie.

**Syntaxe**

```sql theme={null}
toIPv6OrDefault(string[, default])
```

**Arguments**

* `string` — Chaîne d’adresse IP à convertir. - `default` — Facultatif. Valeur à renvoyer si la chaîne a un format invalide.

**Valeur renvoyée**

Renvoie l’adresse IPv6, sinon `::` ou la valeur par défaut facultative fournie si l’argument `string` a un format invalide. [`IPv6`](/fr/reference/data-types/ipv6)

**Exemples**

**Chaînes IPv6 valides et invalides**

```sql title=Query theme={null}
WITH
    '2001:0db8:85a3:0000:0000:8a2e:0370:7334' AS valid_IPv6_string,
    '2001:0db8:85a3::8a2e:370g:7334' AS invalid_IPv6_string,
    'not_an_ipv6' AS malformed_string
SELECT
    toIPv6OrDefault(valid_IPv6_string) AS valid,
    toIPv6OrDefault(invalid_IPv6_string) AS default_value,
    toIPv6OrDefault(malformed_string, toIPv6('::1')) AS provided_default;
```

```response title=Response theme={null}
┌─valid──────────────────────────────────┬─default_value─┬─provided_default─┐
│ 2001:db8:85a3::8a2e:370:7334           │ ::            │ ::1              │
└────────────────────────────────────────┴───────────────┴──────────────────┘
```

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

Introduit dans : v22.3.0

Convertit une valeur d’entrée en valeur de type `IPv6`, mais renvoie `NULL` en cas d’erreur.
Comme [`toIPv6`](#toIPv6), mais renvoie `NULL` au lieu de lever une exception en cas d’erreur de conversion.

Arguments pris en charge :

* Représentations textuelles d’adresses IPv6 en notation standard.
* Représentations textuelles d’adresses IPv4 (converties en adresses IPv6 mappées sur IPv4).
* Représentations binaires d’adresses IPv6.

Arguments non pris en charge (renvoient `NULL`) :

* Formats d’adresse IP invalides.
* Adresses IPv6 mal formées.
* Valeurs hors plage.
* Notation invalide.

**Syntaxe**

```sql theme={null}
toIPv6OrNull(x)
```

**Arguments**

* `x` — Une représentation sous forme de chaîne d’une adresse IPv6 ou IPv4. [`String`](/fr/reference/data-types/string)

**Valeur renvoyée**

Renvoie une adresse IPv6 en cas de réussite, sinon `NULL`. [`IPv6`](/fr/reference/data-types/ipv6) ou [`NULL`](/fr/reference/syntax#null)

**Exemples**

**Exemple d’utilisation**

```sql title=Query theme={null}
SELECT
    toIPv6OrNull('2001:0db8:85a3:0000:0000:8a2e:0370:7334') AS valid_ipv6,
    toIPv6OrNull('invalid::ip') AS invalid_ipv6
```

```response title=Response theme={null}
┌─valid_ipv6──────────────────────────┬─invalid_ipv6─┐
│ 2001:db8:85a3::8a2e:370:7334        │         ᴺᵁᴸᴸ │
└─────────────────────────────────────┴──────────────┘
```

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

Introduit dans : v23.1.0

Convertit une valeur d’entrée en valeur de type [IPv6](/fr/reference/data-types/ipv6), mais renvoie l’adresse IPv6 nulle en cas d’erreur.
Comme [`toIPv6`](#toIPv6), mais renvoie l’adresse IPv6 nulle (`::`) au lieu de lever une exception en cas d’erreur de conversion.

Arguments pris en charge :

* Représentations sous forme de chaîne d’adresses IPv6 en notation standard.
* Représentations sous forme de chaîne d’adresses IPv4 (converties en IPv6 mappées sur IPv4).
* Représentations binaires d’adresses IPv6.

Arguments non pris en charge (renvoient une adresse IPv6 nulle) :

* Formats d’adresse IP non valides.
* Adresses IPv6 mal formées.
* Valeurs hors plage.

**Syntaxe**

```sql theme={null}
toIPv6OrZero(x)
```

**Arguments**

* `x` — La représentation sous forme de chaîne d'une adresse IPv6 ou IPv4. [`String`](/fr/reference/data-types/string)

**Valeur renvoyée**

Renvoie une adresse IPv6 en cas de réussite, sinon l'adresse IPv6 nulle (`::`).  [`IPv6`](/fr/reference/data-types/ipv6)

**Exemples**

**Exemple d'utilisation**

```sql title=Query theme={null}
SELECT
    toIPv6OrZero('2001:0db8:85a3:0000:0000:8a2e:0370:7334') AS valid_ipv6,
    toIPv6OrZero('invalid::ip') AS invalid_ipv6
```

```response title=Response theme={null}
┌─valid_ipv6──────────────────────────┬─invalid_ipv6─┐
│ 2001:db8:85a3::8a2e:370:7334        │ ::           │
└─────────────────────────────────────┴──────────────┘
```
