Así es como lo tengo funcionando:
- Creó otra tabla con las mismas columnas, pero
network_start_ip
ynetwork_last_ip
sonVARBINARY(16)
- Rellenó esa tabla con esta declaración:
INSERT INTO blocks SELECT INET6_ATON(b2.network_start_ip), INET6_ATON(b2.network_last_ip), b2.geoname_id FROM blocks_copy b2;
- Luego, para verificar si la dirección IPv6 está dentro del rango, solo necesito ejecutar esta consulta:
SELECT geoname_id FROM blocks b WHERE INET6_ATON('2a01:4ff:ffff:ffff::ffff') BETWEEN b.network_start_ip AND b.network_last_ip