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

> Documentación sobre las funciones para trabajar con direcciones IPv4 e IPv6.

# Funciones para trabajar con direcciones IPv4 e IPv6

{/*AUTOGENERATED_START*/}

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

Introducido en: v20.1.0

Toma una dirección IPv4 con la longitud de su prefijo de enrutamiento entre dominios sin clases (CIDR) y devuelve el rango de direcciones de la subred como una tupla de dos valores IPv4: la primera y la última dirección de esa subred.
Para la versión IPv6, consulte [`IPv6CIDRToRange`](#IPv4CIDRToRange).

**Sintaxis**

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

**Argumentos**

* `ipv4` — Dirección IPv4. [`IPv4`](/es/reference/data-types/ipv4) o [`String`](/es/reference/data-types/string)
* `cidr` — Valor de CIDR. [`UInt8`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve una tupla con dos direcciones IPv4 que representan el rango de la subred. [`Tuple(IPv4, IPv4)`](/es/reference/data-types/tuple)

**Ejemplos**

**Ejemplo de uso**

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

Introducido en: v1.1.0

Convierte un entero de 32 bits en la representación textual de su dirección IPv4 en notación decimal con puntos (formato A.B.C.D).
Interpreta la entrada usando el orden de bytes big-endian.

**Sintaxis**

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

**Alias**: `INET_NTOA`

**Argumentos**

* `num` — dirección IPv4 como número UInt32. [`UInt32`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve un número que representa la dirección MAC, o `0` si el formato no es válido. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v1.1.0

Convierte un entero de 32 bits en la representación en cadena de su dirección IPv4 en notación decimal con puntos (formato A.B.C.D),
similar a [`IPv4NumToString`](#IPv4NumToString), pero usa `xxx` en lugar del último octeto.

**Sintaxis**

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

**Argumentos**

* `num` — Dirección IPv4 en forma de número UInt32. [`UInt32`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve la cadena de dirección IPv4, con xxx en lugar del último octeto. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo básico con agregación**

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

Introducido en: v1.1.0

Convierte una cadena con una dirección IPv4 en notación decimal con puntos (formato A.B.C.D) en su correspondiente representación entera de 32 bits. (La operación inversa de [`IPv4NumToString`](#IPv4NumToString)).
Si la dirección IPv4 tiene un formato no válido, se lanza una excepción.

**Sintaxis**

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

**Alias**: `INET_ATON`

**Argumentos**

* `string` — Cadena con la dirección IPv4. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la dirección IPv4. [`UInt32`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

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

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

Introducido en: v22.3.0

Convierte una cadena con una dirección IPv4 en notación decimal con puntos (formato A.B.C.D) en su correspondiente representación entera de 32 bits; si la dirección IPv4 tiene un formato no válido, devuelve `0`.

**Sintaxis**

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

**Argumentos**

* `string` — Cadena con una dirección IPv4. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la dirección IPv4 o `0` si no es válida. [`UInt32`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo con una dirección no válida**

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

Introducido en: v22.3.0

Convierte un entero de 32 bits en la representación de cadena de su dirección IPv4 en notación decimal con puntos (formato A.B.C.D), pero, si la dirección IPv4 tiene un formato no válido, devuelve `NULL`.

**Sintaxis**

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

**Argumentos**

* `string` — Cadena con una dirección IPv4. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la dirección IPv4, o `NULL` si no es válida. [`Nullable(UInt32)`](/es/reference/data-types/nullable)

**Ejemplos**

**Ejemplo con una dirección no válida**

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

Introducido en: v1.1.0

Interpreta un número de 32 bits (big-endian) como una dirección IPv4, que luego se interpreta como la dirección IPv6 correspondiente en formato `FixedString(16)`.

**Sintaxis**

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

**Argumentos**

* `x` — dirección IPv4. [`UInt32`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve una dirección IPv6 en formato binario. [`FixedString(16)`](/es/reference/data-types/fixedstring)

**Ejemplos**

**Ejemplo de uso**

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

Introducido en: v20.1.0

Toma una dirección IPv6 con la longitud de su prefijo de enrutamiento entre dominios sin clases (CIDR) y devuelve el rango de direcciones de la subred como una tupla de dos valores IPv6: la dirección más baja y la más alta de esa subred.
Para la versión IPv4, consulte [`IPv4CIDRToRange`](#IPv4CIDRToRange).

**Sintaxis**

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

**Argumentos**

* `ipv6` — Dirección IPv6. [`IPv6`](/es/reference/data-types/ipv6) o [`String`](/es/reference/data-types/string)
* `cidr` — Valor CIDR. [`UInt8`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve una tupla con dos direcciones IPv6 que representan el rango de la subred. [`Tuple(IPv6, IPv6)`](/es/reference/data-types/tuple)

**Ejemplos**

**Ejemplo de uso**

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

Introducido en: v1.1.0

Convierte una dirección IPv6 del formato binario (FixedString(16)) a su representación de texto estándar.
Las direcciones IPv6 con mapeo de IPv4 se muestran con el formato `::ffff:111.222.33.44`.

**Sintaxis**

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

**Alias**: `INET6_NTOA`

**Argumentos**

* `x` — Dirección IPv6 en formato binario. [`FixedString(16)`](/es/reference/data-types/fixedstring) o [`IPv6`](/es/reference/data-types/ipv6)

**Valor devuelto**

Devuelve la dirección IPv6 como cadena en formato de texto. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

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

**Análisis de hits con IPv6**

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

**Direcciones IPv4 mapeadas en 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>

Introducido en: v1.1.0

Convierte una dirección IPv6 de su representación textual estándar al formato binario (`FixedString(16)`).
Acepta direcciones IPv6 con mapeo de IPv4 en el formato `::ffff:111.222.33.44.`.
Si la dirección IPv6 tiene un formato no válido, se lanza una excepción.

Si la cadena de entrada contiene una dirección IPv4 válida, devuelve su equivalente en IPv6.
HEX puede estar en mayúsculas o minúsculas.

**Sintaxis**

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

**Aliases**: `INET6_ATON`

**Argumentos**

* `string` — Cadena con la dirección IPv6. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la dirección IPv6 en formato binario. [`FixedString(16)`](/es/reference/data-types/fixedstring)

**Ejemplos**

**Ejemplo básico**

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

Introducido en: v22.3.0

Convierte una dirección IPv6 de su representación textual estándar al formato binario (`FixedString(16)`).
Acepta direcciones IPv6 con mapeo de IPv4 en el formato `::ffff:111.222.33.44.`.
Si la dirección IPv6 tiene un formato no válido, devuelve el valor predeterminado `::`.

**Sintaxis**

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

**Argumentos**

* `string` — Cadena con la dirección IPv6. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Dirección IPv6 en formato binario, o `FixedString(16)` rellenado con ceros si no es válida. [`FixedString(16)`](/es/reference/data-types/fixedstring)

**Ejemplos**

**Ejemplo básico con una dirección no válida**

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

Introducido en: v22.3.0

Convierte una dirección IPv6 de su representación de texto estándar a formato binario (`FixedString(16)`).
Acepta direcciones IPv6 con mapeo de IPv4 en el formato `::ffff:111.222.33.44.`.
Si la dirección IPv6 tiene un formato no válido, devuelve `NULL`.

**Sintaxis**

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

**Argumentos**

* `string` — Cadena con una dirección IPv6. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve la dirección IPv6 en formato binario, o `NULL` si no es válida. [`Nullable(FixedString(16))`](/es/reference/data-types/nullable)

**Ejemplos**

**Ejemplo básico con una dirección no válida**

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

Introducido en: v1.1.0

Acepta un valor `FixedString(16)` que contiene la dirección IPv6 en formato binario.
Devuelve una cadena que contiene la dirección, con el número especificado de bytes eliminados, en formato de texto.

**Sintaxis**

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

**Argumentos**

* `x` — Dirección IPv6 en formato binario. [`FixedString(16)`](/es/reference/data-types/fixedstring) o [`IPv6`](/es/reference/data-types/ipv6)
* `bytesToCutForIPv6` — Número de bytes que se deben eliminar para IPv6. [`UInt8`](/es/reference/data-types/int-uint)
* `bytesToCutForIPv4` — Número de bytes que se deben eliminar para IPv4. [`UInt8`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve una cadena que contiene la dirección IPv6 en formato de texto con los bytes especificados eliminados. [`String`](/es/reference/data-types/string)

**Ejemplos**

**Ejemplo de uso**

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

Introducido en: v21.4.0

Determina si una dirección IP está incluida en una red representada en notación [enrutamiento entre dominios sin clases (CIDR)](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing).

Esta función acepta direcciones IPv4 e IPv6 (y redes) representadas como cadenas. Devuelve `0` si la versión IP de la dirección y la del CIDR no coinciden.

**Sintaxis**

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

**Argumentos**

* `address` — Una dirección IPv4 o IPv6. [`String`](/es/reference/data-types/string)
* `prefix` — Un prefijo de red IPv4 o IPv6 en formato CIDR. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve `1` si la versión IP de la dirección y el CIDR coinciden; de lo contrario, `0`. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Dirección IPv4 dentro del rango**

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

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

**Dirección IPv4 fuera del rango**

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

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

**Dirección IPv6 fuera de rango**

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

Introducido en: v21.1.0

Determina si la cadena de entrada es una dirección IPv4.
Para la versión para IPv6, consulta [`isIPv6String`](#isIPv6String).

**Sintaxis**

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

**Argumentos**

* `string` — cadena con la dirección IP que se va a comprobar. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve `1` si `string` es una dirección IPv4; de lo contrario, `0`. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

Introducido en: v21.1.0

Determina si la cadena de entrada es una dirección IPv6.
Para la versión para IPv4, consulte [`isIPv4String`](#isIPv4String).

**Sintaxis**

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

**Argumentos**

* `string` — Cadena con la dirección IP que se va a comprobar. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve `1` si `string` es una dirección IPv6; de lo contrario, `0`. [`UInt8`](/es/reference/data-types/int-uint)

**Ejemplos**

**Ejemplo de uso**

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

Introducido en: v20.1.0

Convierte una cadena o una dirección IPv4 en formato UInt32 al tipo IPv4.
Es similar a las funciones [`IPv4StringToNum`](/es/reference/functions/regular-functions/ip-address-functions#IPv4StringToNum) y [`IPv4NumToString`](/es/reference/functions/regular-functions/ip-address-functions#IPv4NumToString), pero admite como argumentos de entrada tanto cadenas como tipos de datos enteros sin signo.

**Sintaxis**

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

**Argumentos**

* `x` — Una dirección IPv4 de tipo [`String`](/es/reference/data-types/string) o [`UInt8/16/32`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve una dirección IPv4. [`IPv4`](/es/reference/data-types/ipv4)

**Ejemplos**

**Ejemplo de uso**

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

**Comparación con las funciones IPv4StringToNum e 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                 │
└───────────────────────────────────┴──────────────────────────┘
```

**Conversión a partir de un entero**

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

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

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

Introducido en: v22.3.0

Convierte una cadena o una dirección IPv4 en formato UInt32 al tipo [`IPv4`](/es/reference/data-types/ipv4).
Si la dirección IPv4 tiene un formato no válido, devuelve `0.0.0.0` (IPv4 0) o el valor predeterminado de IPv4 especificado.

**Sintaxis**

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

**Argumentos**

* `string` — Cadena con la dirección IP que se va a convertir. [`String`](/es/reference/data-types/string)
* `default` — Opcional. Valor que se devolverá si `string` no es una dirección IPv4 válida. [`IPv4`](/es/reference/data-types/ipv4)

**Valor devuelto**

Devuelve la dirección IPv4 obtenida a partir de la cadena, o el valor predeterminado si la conversión falla. [`IPv4`](/es/reference/data-types/ipv4)

**Ejemplos**

**Cadenas IPv4 válidas y no válidas**

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

Introducido en: v22.3.0

Convierte un valor de entrada en un valor de tipo `IPv4`, pero devuelve `NULL` en caso de error.
Como [`toIPv4`](#toIPv4), pero devuelve `NULL` en lugar de lanzar una excepción ante errores de conversión.

Argumentos admitidos:

* Representaciones en cadena de direcciones IPv4 en notación decimal con puntos.
* Representaciones enteras de direcciones IPv4.

Argumentos no admitidos (devuelven `NULL`):

* Formatos de direcciones IP no válidos.
* Direcciones IPv6.
* Valores fuera de rango.
* Direcciones malformadas.

**Sintaxis**

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

**Argumentos**

* `x` — Una dirección IPv4 representada como cadena o entero. [`String`](/es/reference/data-types/string) o [`Integer`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve una dirección IPv4 si la operación se realiza correctamente; de lo contrario, `NULL`. [`IPv4`](/es/reference/data-types/ipv4) o [`NULL`](/es/reference/syntax#null)

**Ejemplos**

**Ejemplo de uso**

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

Introducido en: v23.1.0

Convierte un valor de entrada en un valor de tipo [IPv4](/es/reference/data-types/ipv4), pero devuelve la dirección IPv4 nula en caso de error.
Como [`toIPv4`](#toIPv4), pero devuelve la dirección IPv4 nula (`0.0.0.0`) en lugar de lanzar una excepción cuando se producen errores de conversión.

Argumentos admitidos:

* Representaciones en cadena de direcciones IPv4 en notación decimal con puntos.
* Representaciones enteras de direcciones IPv4.

Argumentos no admitidos (devuelven una dirección IPv4 nula):

* Formatos de dirección IP no válidos.
* Direcciones IPv6.
* Valores fuera de rango.

**Sintaxis**

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

**Argumentos**

* `x` — Una representación en forma de cadena o de entero de una dirección IPv4. [`String`](/es/reference/data-types/string) o [`Integer`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve una dirección IPv4 si la conversión se realiza correctamente; en caso contrario, devuelve la dirección IPv4 cero (`0.0.0.0`). [`IPv4`](/es/reference/data-types/ipv4)

**Ejemplos**

**Ejemplo de uso**

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

Introducido en: v20.1.0

Convierte una cadena o una dirección IPv6 en formato `UInt128` al tipo [`IPv6`](/es/reference/data-types/ipv6).
En el caso de las cadenas, si la dirección IPv6 tiene un formato no válido, devuelve un valor vacío.
Es similar a las funciones [`IPv6StringToNum`](/es/reference/functions/regular-functions/ip-address-functions#IPv6StringToNum) y [`IPv6NumToString`](/es/reference/functions/regular-functions/ip-address-functions#IPv6NumToString), que convierten direcciones IPv6 a y desde formato binario (es decir, `FixedString(16)`).

Si la cadena de entrada contiene una dirección IPv4 válida, se devuelve su equivalente en IPv6.

**Sintaxis**

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

**Argumentos**

* `x` — Una dirección IP. [`String`](/es/reference/data-types/string) o [`UInt128`](/es/reference/data-types/int-uint)

**Valor devuelto**

Devuelve una dirección IPv6. [`IPv6`](/es/reference/data-types/ipv6)

**Ejemplos**

**Ejemplo de uso**

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

**Mapeo de IPv4 a 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>

Introducido en: v22.3.0

Convierte una cadena o una dirección IPv6 en formato UInt128 al tipo [`IPv6`](/es/reference/data-types/ipv6).
Si la dirección IPv6 tiene un formato no válido, devuelve `::` (IPv6 0) o el valor predeterminado de IPv6 proporcionado.

**Sintaxis**

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

**Argumentos**

* `string` — Cadena con la dirección IP que se va a convertir. - `default` — Opcional. Valor que se devolverá si la cadena tiene un formato no válido.

**Valor devuelto**

Devuelve la dirección IPv6; en caso contrario, `::` o el valor predeterminado opcional proporcionado si el argumento `string` tiene un formato no válido. [`IPv6`](/es/reference/data-types/ipv6)

**Ejemplos**

**Cadenas IPv6 válidas y no válidas**

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

Introducido en: v22.3.0

Convierte un valor de entrada en un valor de tipo `IPv6`, pero devuelve `NULL` en caso de error.
Igual que [`toIPv6`](#toIPv6), pero devuelve `NULL` en lugar de generar una excepción cuando se producen errores de conversión.

Argumentos compatibles:

* Representaciones en cadena de direcciones IPv6 en notación estándar.
* Representaciones en cadena de direcciones IPv4 (convertidas en direcciones IPv6 con mapeo de IPv4).
* Representaciones binarias de direcciones IPv6.

Argumentos no compatibles (devuelven `NULL`):

* Formatos de direcciones IP no válidos.
* Direcciones IPv6 mal formadas.
* Valores fuera de rango.
* Notación no válida.

**Sintaxis**

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

**Argumentos**

* `x` — Una representación textual de una dirección IPv6 o IPv4. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una dirección IPv6 si la conversión se realiza correctamente; de lo contrario, `NULL`. [`IPv6`](/es/reference/data-types/ipv6) o [`NULL`](/es/reference/syntax#null)

**Ejemplos**

**Ejemplo de uso**

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

Introducido en: v23.1.0

Convierte un valor de entrada en un valor de tipo [IPv6](/es/reference/data-types/ipv6), pero devuelve la dirección IPv6 nula en caso de error.
Es como [`toIPv6`](#toIPv6), pero devuelve la dirección IPv6 nula (`::`) en lugar de lanzar una excepción cuando se producen errores de conversión.

Argumentos admitidos:

* Representaciones en cadena de direcciones IPv6 en notación estándar.
* Representaciones en cadena de direcciones IPv4 (convertidas a IPv6 con mapeo de IPv4).
* Representaciones binarias de direcciones IPv6.

Argumentos no admitidos (devuelven la dirección IPv6 nula):

* Formatos de dirección IP no válidos.
* Direcciones IPv6 mal formadas.
* Valores fuera de rango.

**Sintaxis**

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

**Argumentos**

* `x` — Una representación en cadena de una dirección IPv6 o IPv4. [`String`](/es/reference/data-types/string)

**Valor devuelto**

Devuelve una dirección IPv6 si la conversión se realiza correctamente; de lo contrario, devuelve la dirección IPv6 cero (`::`).  [`IPv6`](/es/reference/data-types/ipv6)

**Ejemplos**

**Ejemplo de uso**

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