在PostgreSQL中,IPv4地址的正确数据类型是什么?
我听说过 inet
,但从未使用过。
我需要执行类似于 SELECT ... WHERE ip = '99.88.99.88'
的SELECT
查询,并且它应该支持人类可读格式的输出(通过人类可读格式,我指的是“99.88.99.88”)。
能够按子网选择IP地址将是不错的功能。
提前感谢您的任何建议!
在PostgreSQL中,IPv4地址的正确数据类型是什么?
我听说过 inet
,但从未使用过。
我需要执行类似于 SELECT ... WHERE ip = '99.88.99.88'
的SELECT
查询,并且它应该支持人类可读格式的输出(通过人类可读格式,我指的是“99.88.99.88”)。
能够按子网选择IP地址将是不错的功能。
提前感谢您的任何建议!
cidr
和inet
类型将实现您想要的功能,并提供适当的运算符:regress=> SELECT '192.168.1.19'::inet << '192.168.1.0/24'::cidr;
?column?
----------
t
(1 row)
cidr
和 inet
类型,提供了有限的索引支持;特别是,“范围内地址”类型查询至少在地址为常量时被转换为范围查询。请参见 此(相当古老的)主题讨论。ip4r
的观点。inet
类型字段的子网包含测试,那么只需要访问http://www.postgresql.org/docs/current/static/datatype-net-types.html就可以了。