我查网上资料,在数据库中存储 IP 地址,通常有使用 VARCHAR 和 UNSIGNED INT 两种方案,各有利弊。请问各位在项目中使用哪种方案存储 IP 地址字段?

我查网上资料,在数据库中存储 IP 地址,通常有使用 VARCHAR 和 UNSIGNED INT 两种方案,各有利弊。请问各位在项目中使用哪种方案存储 IP 地址字段?
1 GeorgeGalway Sep 20, 2022 VARCHAR |
2 danbai PRO VARCHAR |
3 0o0O0o0O0o Sep 20, 2022 VARBINARY(4) 或者 VARBINARY(16) |
4 LeegoYih Sep 20, 2022 都可以,varchar 方便读,int 节约一点点空间,IP 应该不会有模糊查询的需求吧? 同一个项目中使用统一规范即可,不用纠结 |
5 fisherwei Sep 20, 2022 你们用 varchar 存储的,遇到需要匹配 x.x.x.x/y 的需求怎么处理的? 比如加白、拉黑 |
8 tramm Sep 20, 2022 随意啦,需要存 IP 地址的地方也不多吧... |
10 lmshl Sep 20, 2022 UNSIGNED INT ,遇到取 cidr 的时候,直接 BETWEEN 就搞定了 |
11 picone Sep 20, 2022 |
12 Wdafff Sep 20, 2022 磁盘便宜,怎么方便怎么来 |
13 QKgf555H87Fp0cth Sep 20, 2022 一切从简,VARCHAR |
14 knightdf Sep 20, 2022 你可以都存 |
15 agagega Sep 20, 2022 via iPhone 用 unsigned int 小心 ipv6 |
16 IDAEngine Sep 20, 2022 存 16 进制 |
17 loginv2 Sep 20, 2022 两个都存 |
18 masterclock Sep 20, 2022 ipv4 ,存字符串的话,存前先同一个格式吗? 比如 127.0.0.1 127.1 0177.0.0.1 0177.1 0x7F000001 167772673 |
19 adoal Sep 20, 2022 PostgreSQL 原生 inet/cidr 类型 |
20 NoString Sep 20, 2022 clickhouse 有 ipv4 和 ipv6 的类型 |
21 msg7086 Sep 20, 2022 IPv4 存 int32 ,IPv6 用 binary(16)。 |
22 newmlp Sep 20, 2022 当然 int ,需要显示的地方让前端自己转一下就行了 |
23 JohnBull Sep 20, 2022 PostgreSQL 内置了 CIDR 类型,支持 v4 和 v6 |
24 ericls Sep 21, 2022 via iPhone 看要解决什么问题 |
25 julyclyde Sep 21, 2022 varchar 显然是错误的 如果没有特定的类型,应该用某种 uint32 保存 IPv4 地址 |
26 bthulu Sep 21, 2022 varchar, 要相信现代数据库的查询能力 |
27 cheng6563 Sep 21, 2022 char(15) 并且 1.2.3.4 存成 001.002.003.004 |
28 nothingistrue Sep 21, 2022 看业务需求,一般没有防火墙处理的话,VARCHAR 即可,因为你业务上就是把它当字符串用的。 |
29 RRRoger Sep 21, 2022 postgres 有专门存储 ip 的字段 |
30 Junzhou Sep 21, 2022 直接 long 就可以了,或者无符号 int ,存取的时候使用 mysql 运算函数转换。 |