----------+---------------- --+ | a | IS_IPV4_MAPPED(a) | b | IS_IPV4_MAPPED(b) | +--------------------+-------------------+--------------------+---------------- --+ | ffff::ffff | 0 | ffff::ffff | 0 | | ::ffff:192.168.0.1 | 1 | ::ffff:192.168.0.1 | 1 | +--------------------+-------------------+--------------------+---------------- --+ CREATE OR REPLACE TABLE t1 ( a INET6, b BINARY(16) DEFAULT UNHEX(HEX(a)) ); INSERT INTO t1 (a) VALUES ('ffff::ffff'),('::ffff:192.168.0.1'); SELECT a, IS_IPV4_MAPPED(a), HEX(b), IS_IPV4_MAPPED(b) FROM t1; +--------------------+-------------------+----------------------------------+-- ----------------+ | a | IS_IPV4_MAPPED(a) | HEX(b) | IS_IPV4_MAPPED(b) | +--------------------+-------------------+----------------------------------+-- ----------------+ | ffff::ffff | 0 | FFFF000000000000000000000000FFFF | 0 | | ::ffff:192.168.0.1 | 1 | 00000000000000000000FFFFC0A80001 | 1 | +--------------------+-------------------+----------------------------------+-- ----------------+ Prepared Statement Parameters Examples -------------------------------------- CREATE OR REPLACE TABLE t1 (a INET6); EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (?)' USING 'ffff::fffe'; EXECUTE IMMEDIATE 'INSERT INTO t1 VALUES (?)' USING X'FFFF000000000000000000000000FFFF'; SELECT * FROM t1; +------------+ | a | +------------+ | ffff::fffe | | ffff::ffff | +------------+ EXECUTE IMMEDIATE 'SELECT * FROM t1 WHERE a=?' USING 'ffff::fffe'; +------------+ | a | +------------+ | ffff::fffe | +------------+ EXECUTE IMMEDIATE 'SELECT * FROM t1 WHERE a=?' USING X'FFFF000000000000000000000000FFFF'; +------------+ | a | +------------+ | ffff::ffff | +------------+ Migration between BINARY(16) and INET6 Examples ----------------------------------------------- Before MariaDB 10.5: CREATE OR REPLACE TABLE t1 (a BINARY(16)); INSERT INTO t1 VALUES (INET6_ATON('ffff::ffff')); SELECT INET6_NTOA(a) FROM t1; +---------------+ | INET6_NTOA(a) | +---------------+ | ffff::ffff | +---------------+ Migrating to INET6, from MariaDB 10.5: ALTER TABLE t1 MODIFY a INET6; INSERT INTO t1 VALUES ('ffff::fffe'); SELECT * FROM t1; +------------+ | a | +------------+ | ffff::ffff | | ffff::fffe | +------------+ Migration from INET6 to BINARY(16): CREATE OR REPLACE TABLE t1 (a INET6); INSERT INTO t1 VALUES ('2001:db8::ff00:42:8329'); INSERT INTO t1 VALUES ('::ffff:192.168.0.1'); INSERT INTO t1 VALUES ('::192.168.0.1'); ALTER TABLE t1 MODIFY a BINARY(16); SELECT INET6_NTOA(a) FROM t1; +------------------------+ | INET6_NTOA(a) | +------------------------+ | 2001:db8::ff00:42:8329 | | ::ffff:192.168.0.1 | | ::192.168.0.1 | +------------------------+ Casting from INET4 to INET6 --------------------------- From MariaDB 11.3.0, casting from INET4 data types to INET6 is permitted, allowing INET4 values to be inserted into INET6 columns. Before MariaDB 11.3: CREATE TABLE t1 (a INET6); INSERT INTO t1 VALUES('0.0.0.0'), ('255.10.0.0'), ('255.255.255.255'); ERROR 1292 (22007): Incorrect inet6 value: '0.0.0.0' for column `test`.`t1`.`a` at row 1 From MariaDB 11.3: CREATE TABLE t1 (a INET6); INSERT INTO t1 VALUES('0.0.0.0'), ('255.10.0.0'), ('255.255.255.255'); Query OK, 3 rows affected (0.027 sec) URL: https://mariadb.com/kb/en/inet6/