我查网上资料,在数据库中存储 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 运算函数转换。
|