Postgresql 用于标识ipv4与ipv6地址的方法

Postgresql 用于标识ipv4与ipv6地址的方法,postgresql,Postgresql,我在postgres数据库中有一个ip字段,定义为inet字段 目前,要确定ipv4与ipv6,我似乎可以在某种程度上使用冒号计数和/或“.”计数,但一定有更好的方法,对吗 COLON_COUNT = (length(ip::text) - length(replace(ip::text, ':', ''))); DOT_COUNT = (length(ip::text) - length(replace(ip::text, '.', ''))); 确定地址是ipv4还是ipv6的干净/好方法

我在postgres数据库中有一个ip字段,定义为
inet
字段

目前,要确定ipv4与ipv6,我似乎可以在某种程度上使用冒号计数和/或“.”计数,但一定有更好的方法,对吗

COLON_COUNT = (length(ip::text) - length(replace(ip::text, ':', '')));
DOT_COUNT = (length(ip::text) - length(replace(ip::text, '.', '')));

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

我认为如果没有输入尾随的零,您可以将该字段转换为一个数字,然后查看该数字是否小于2或32 ipv4(ipv6).
这意味着在数字转换之前过滤掉冒号和点。

我认为如果没有输入尾随的零,您可以将字段转换成一个数字,然后查看该数字是否小于2次方32 IPv4(IPV6)。
这意味着在数字转换之前过滤掉冒号和点。

使用。IPv4将返回4,IPv6将返回6。

使用。IPv4将返回4,IPv6将返回6。

我认为如果没有输入尾随的零,您可以将该字段转换为一个数字,然后查看该数字是否小于2乘以32 IPv4(IPv6)。这意味着在数字转换之前过滤掉冒号和圆点。这是个好主意!我认为如果后面的零没有被输入,你可以把这个字段转换成一个数字,然后看看这个数字是否小于2次方32 IPv4(IPV6)。这意味着在数字转换之前过滤掉冒号和圆点。这是个好主意!太好了,谢谢!我正在看那一页,但是我忽略了这个。太好了,谢谢!我在看那一页,但我忽略了这一点。