识别ipv4与ipv6地址的方法

时间:2016-04-13 08:25:46

标签: postgresql

我在postgres数据库中有一个ip字段,定义为COLON_COUNT = (length(ip::text) - length(replace(ip::text, ':', ''))); DOT_COUNT = (length(ip::text) - length(replace(ip::text, '.', ''))); 字段。

目前,为了确定ipv4 vs ipv6,看起来我可以使用冒号和/或'。'在某种程度上,但必须有更好的方法,对吗?

realm = Realm.getInstance(...)

确定地址是ipv4还是ipv6的干净/好方法是什么?

2 个答案:

答案 0 :(得分:5)

使用family() function。 IPv4将返回4,IPv6将返回6.

答案 1 :(得分:1)

我认为如果没有省略尾随零,你可以将字段转换为数字并查看该数字是否小于2的权限32 IPv4或不是(IPV6)。
这意味着过滤掉冒号和点在数字转换之前。