gpt4 book ai didi

mysql - 提取 IPV4 的前三个八位字节

转载 作者:可可西里 更新时间:2023-11-01 06:31:34 25 4
gpt4 key购买 nike

假设有一张表只有一个字段。表名为 address 并且有一个名为 ip 的字段,其中包含一个 IPV4 地址作为其值

示例数据

192.168.120.201
192.168.120.202
192.168.120.203
192.168.120.204
192.168.120.205
192.168.121.3
192.168.121.50

我需要对该表运行查询,它将返回前三个八位字节的数据 COUNT

预期输出

network count

192.168.120 5

192.168.121 3

我试过使用 SUBSTR 之类的

SELECT SUBSTR(ip,1,10) as network,COUNT(*) as c FROM address GROUP BY network HAVING(c>1)

但问题是,如果所有前 3 个八位字节各有 3 个数字,此 SUBSTR 将仅按预期工作,但这将打破任何第一个没有 3 个数字的 ip 地址三个八位字节。例如,这不适用于

192.168.0.0

192.2.3.50

192.23.4.60

问题

是否有任何替代上述查询的方法适用于上述所有情况?

最佳答案

不要进行字符串操作。您最好将 IP 转换为整数并使用一些位掩码,例如

SELECT INET_NTOA(INET_ATON(ipfield) & 0xFFFFFF00)

关于mysql - 提取 IPV4 的前三个八位字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15817003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com