Đây là cách tôi đã làm cho nó hoạt động:
- Đã tạo một bảng khác có cùng các cột, nhưng
network_start_ip
vànetwork_last_ip
làVARBINARY(16)
- Đã điền vào bảng đó với câu lệnh sau:
INSERT INTO blocks SELECT INET6_ATON(b2.network_start_ip), INET6_ATON(b2.network_last_ip), b2.geoname_id FROM blocks_copy b2;
- Sau đó, để kiểm tra xem địa chỉ IPv6 có nằm trong dải hay không, tôi chỉ cần chạy truy vấn sau:
SELECT geoname_id FROM blocks b WHERE INET6_ATON('2a01:4ff:ffff:ffff::ffff') BETWEEN b.network_start_ip AND b.network_last_ip