Skip to content

IPv6 ​

IPv6 stores a validated IPv6 address. Display uses lowercase hexadecimal and compressed groups of zeros. Ordering compares address values rather than their text spellings.

Syntax ​

text
IPv6

Invalid addresses raise TYPE_MISMATCH. Casting to BLOB exposes the 16 network-order bytes. An IPv4-mapped IPv6 address compares equal to its IPv4 counterpart.

A top-level column permits SQL NULL unless it declares NOT NULL. Use the inet and cidr types when the value must also retain a subnet prefix.

Examples ​

Normalizing an address ​

sql
SELECT CAST('2001:DB8:0:0:0:0:0:1' AS IPv6)
FORMAT csv;
text
"2001:db8::1"

Comparing IPv4-mapped addresses ​

sql
SELECT CAST('127.0.0.1' AS IPv4)
     = CAST('::ffff:127.0.0.1' AS IPv6)
FORMAT csv;
text
1

Storing client addresses ​

sql
CREATE TABLE clients(id UInt32, ip IPv6);
INSERT INTO clients VALUES (1, '2001:db8::1'), (2, '2001:db8::2');
sql
SELECT id, ip
FROM clients
ORDER BY ip
FORMAT csv;
text
1,"2001:db8::1"
2,"2001:db8::2"

See IP address functions for address and subnet operations.