|
1
我的意思是想问 IPV6 字符长度是多少
|
|
piconeJun 16, 2020
2
IPv6 地址是 128bit,相当于 16 个 char 就够了,你可以存 blob 。当然读写都得转换一下。
|
|
temporaryJun 16, 2020
3
|
|
liuser666Jun 16, 2020
4
不会吧?现在程序员连 ipv6 多少位都不知道了? 128 位,16 字节。你要是想作为字符串存还得考虑里面的冒号以及简便写法。
|
|
6
V 站问题质量越来越低,百度一下 1 分钟可以知道答案的问题都能问了。
|
|
zhuweiyouJun 16, 2020
7
我以为我进了贴吧
|
|
chenyu0532Jun 16, 2020
9
@frozenway 楼上也不是这个意思。。只是这种 baidu 有的问题就直接 baidu 了。。在这发帖子浪费时间
|
|
10
@frozenway 我觉得你用发这帖子的时间一个一个数都能数出来了😂
|
|
11
网管不是应该对这个玩意儿更加熟悉吗?
网管是不是应该要有 CCIE 证书啥的。 |
|
morphyhuJun 16, 2020
12
这个帖子拉低了 V2EX 的逼格。
|
|
13
不是我们高傲,而是我们希望你能自己解决这个问题,对我们有尊重,对你自己也有好处。这种问题你自己稍微查一下再试一下就能搞定,没必要跑来提问,对你来说是节省了时间,对别人来说呢?这种把别人当工具的提问方式,不只是程序员,相信其他人也不会觉得舒服。
|
|
14
这个长度应该为 inet_ntop() 的 buffer 大小减去 1,即 INET6_ADDRSTRLEN - 1 = 45 字节。举例:ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255
|
|
15
如果不清楚的人估计第一反应都是用 varchar 来存! 方便直观
不过在 MySQL 高性能这本书里推荐的是(unsigned int) 来存储,相比字符串: 1. 节省空间,不管是数据存储空间还是索引存储空间 2. 便于使用范围查询,且效率快 3. 就是在数据库里直观看,不是很方便 IPv4 用 inet_aton 来将 IP 转成 int,用 inet_ntoa 将 int 转回 IP IPv6 用 inet6_aton 来将 IP 转成 INT,用 inet6_ntoa 将 int 转回 IP |
|
16
补充一下( lz 说的是放进“数据库”,并没有指明是什么数据库):
https://www.postgresql.org/docs/9.1/datatype-net-types.html PG 扩展的数据类型是选用它一个很重要的原因之一 |
|
msg7086Jun 16, 2020
17
首先,如果是存数据库,为什么要特意限制 varchar 的长度?
255 字节内的存储成本都是一样的,直接设 varchar(255) ascii 不就行了? 然后 IP 地址存数据库,当然是 VARBINARY(16)咯。 官网找 IPv6 就有全套说明: https://dev.mysql.com/doc/refman/8.0/en/miscellaneous-functions.html#function_inet6-aton |
|
msg7086Jun 16, 2020
18
@GeruzoniAnsasu (偷偷提醒一下,帖子的分类)
|
|
GeruzoniAnsasuJun 16, 2020
19
@msg7086 是我瞎了不好意思
|
|
20
官方推荐用 varbinary(16) 这个兼容 IPV4 IPV6
每次存储前都需要使用 INET6_ATON("ipv4")、INET6_ATON("ipv6")转化为字节码后存储 获取时都需要用 INET6_NTOA("ipv4")、INET6_NTOA("ipv6")转化为字符串 上面这 4 个函数是兼容 IPV4 IPV6 的,貌似对 mysql 版本有要求(忘记具体哪个版本了),不过一般只要不是太老肯定都支持的。。 |
|
21
|
|
xnodeJun 16, 2020
22
varchar(255)的意思不是最大 255? 小于 255 用多少占多少? char 才是固定长度吧
|
|
uriccJun 16, 2020 via iPhone
23
IPv6 的小鸡不都是免费褥么,参考德国 euserv
|
|
zy445566Jun 16, 2020
24
字符串最长 39 位如下:
ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff 字符串最短 4 位如下: 0::0 |
|
CodeCodeStudyJun 16, 2020
26
@msg7086 varchar 的长度还是有影响的,在关联查询的时候会生成临时表,长度越大,临时表越大。
在 https://dev.mysql.com/doc/refman/5.7/en/internal-temporary-tables.html 找到 VARCHAR and VARBINARY column values are padded to the maximum column length, in effect storing them as CHAR and BINARY columns. |
|
msg7086Jun 16, 2020
27
@CodeCodeStudy
是,关联查询会不一样,但是都已经在字符串上关联了,临时表大小可能已经是小问题了…… |
|
realpgJun 16, 2020
28
用 varchar 存 既然都是 var 了 直接给个 200 够了……
|
|
ChanKcJun 16, 2020 via Android
29
今天的 leetcode explore 的题你定的?(笑
|
|
prenwangJun 16, 2020
30
屁, 有啥不能问的, 质量不好的帖子自然会沉下去, 你觉得未提质量低不回复直接忽略就是, 这社区有一套适合每个人的过滤机制, 总有人把自己当卫道士一样. 恶心, 恶心,恶心
|
|
lekai63Jun 16, 2020 via iPhone
31
换我就直接用 pgSQL 存 ip 类型
|
|
6orzOct 26, 2020
33
人家只是问 varchar 多少存一下,回复这么多没用的,楼主你设置 varchar ( 30 )就行了。
|