Я работаю над приложением rails, которое имеет модель IPv6.Я храню IPv6-адрес в 2-х 32-битных и 64-битных int:
+-----------------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+---------------------+------+-----+---------+----------------+
| global_routing_prefix | int(11) unsigned | YES | | NULL | |
| subnet_identifier | int(11) unsigned | YES | | NULL | |
| interface_identifier | bigint(20) unsigned | YES | | NULL | |
К сожалению, когда я иду, чтобы найти IP-адреса в диапазоне, MySQL выполняет всю арифметику со знаком bigints,:
mysql> select 2 BETWEEN 0 AND 18446744073709551614;
+--------------------------------------+
| 2 BETWEEN 0 AND 18446744073709551614 |
+--------------------------------------+
| 0 |
+--------------------------------------+
Есть ли обходной путь, который я могу сделать, или мне нужно разделить interface_identifier на 2 неподписанных целых числа?
Спасибо, Дональд