我想知道如何将INET6_ATON
结果保存到MYSQL。所以我已经阅读了MYSQL-Help文章,它说,我应该使用VARBINARY(16)
。但现在,使用IPv4
- 地址,它的内容为0x7F000001
,我无法使用SQL获得结果。我的想法是使用CHAR
,但在这种情况下,我不知道INET6_ATON
- 结果的最大长度是多少。
所以:如果结果保存为VARBINARY
,如何获取MYSQL结果?
或其他:INET6_ATON
- 结果的最大长度是多少?
我正在使用此SQL语句转换IP地址:
SELECT HEX(INET6_ATON("FE80:0000:0000:0000:0202:B3FF:FE1E:8329"))
非常感谢。
答案 0 :(得分:0)
请注意,下面的人类可读栏目供人食用。
inet6
列将包含超出范围的数字,我应该说对人类有意义。 Goobly goop,如果你愿意的话。
create table myFriends
( id int auto_increment primary key,
friendlyName varchar(100) not null,
inet6 binary(16) not null,
humanReadable char(32) not null
);
insert myFriends (friendlyName,inet6,humanReadable) values
('Kathy Higgins',INET6_ATON("FE80:0000:0000:0000:0202:B3FF:FE1E:8329"),HEX(INET6_ATON("FE80:0000:0000:0000:0202:B3FF:FE1E:8329")));
select * from myFriends;
+----+---------------+------------------+----------------------------------+
| id | friendlyName | inet6 | humanReadable |
+----+---------------+------------------+----------------------------------+
| 1 | Kathy Higgins | ■Ç ☻☻│ ■▲â) | FE800000000000000202B3FFFE1E8329 |
+----+---------------+------------------+----------------------------------+
FE80
代表2个字节。 FE 80.十六进制。每个字节的范围为00到FF(255)。
以不同格式查看我的回答Here。通常在一个表中使用几乎重复的信息。