我如何在MySql中对IP地址进行排序,所以ipv4在ipv6地址之前?

问题描述 投票:0回答:1

我在MySQL中有一个表,其中的一列包含IP地址-存储为'VARCHAR(40)'。 ipv4和ipv6地址都被使用。

现在,我想对那些地址进行排序,但是我希望所有ipv4地址都在所有ipv6地址之前。我试过了:

ORDER BY INET6_ATON(IpAddress),其中IpAddress是列的名称。 INET6_ATON返回“ VARBINARY(16)”。

对此进行排序将得到如下结果:

35.229.251.134
2405:204:900e:e66c::1441:48a1
37.9.113.28

其中ipv4和ipv6混合在一起。这当然是因为24(十六进制)是36(十进制),介于35和37之间。]

我如何对ip地址进行排序,所以ipv4总是排在ipv6之前?

我在MySQL中有一个表,其中的一列包含IP地址-存储为'VARCHAR(40)'。 ipv4和ipv6地址都被使用。现在我想对那些地址进行排序,但是我希望所有的ipv4地址都可以......>

mysql sql sql-order-by ip-address
1个回答
0
投票

您可以寻找.,然后放在第一位:

order by (ipaddress not like '%:%') desc,  -- ipv4 desc
         INET6_ATON(IpAddress)
© www.soinside.com 2019 - 2024. All rights reserved.