查找数字是否位于 MySQL 数据库中不同字段中的两个数字之间

2022-08-30 20:32:46

您如何通过PHP格式化MySQL数据库上的查询,以查找IP地址是否位于两个不同字段中的两个数字之间?

要查找的 IP 地址的数字表示形式:

1265631252

数据库格式:

 IP FROM      IP TO       REGISTRY  ASSIGNED   CTRY CNTRY COUNTRY
"1265631232","1265893375","arin","1152835200","US","USA","United States"
"1265893376","1265958911","arin","1149120000","US","USA","United States"
"1265958912","1266024447","arin","1149120000","US","USA","United States"
"1266024448","1266089983","arin","1162425600","US","USA","United States"

答案 1

像这样的查询:

SELECT * FROM your_table WHERE 1265631252 BETWEEN `IP FROM` AND `IP TO`;

将返回为其提供的数字介于 和 之间的行。IP FROMIP TO


答案 2

如果您已经拥有相当于IP地址的DWORD,那么来自Jordan的响应将解决问题。

SELECT * FROM your_table WHERE 1265631252 BETWEEN `IP FROM` AND `IP TO`;

如果需要,在执行查询之前,计算 IP 地址的 DWORD 等效值,可以执行以下操作。

给定以下形式的IP地址,则可以使用以下公式计算DWORD等效项:apart1.part2.part3.part4

dword(a) = ((a.part1 * 256 + a.part2) * 256 + a.part3) * 256 + a.part4

然后,您可以在 SQL 查询中使用结果。dword(a)

以类似 的 IP 地址开头。206.191.158.55

((206 * 256 + 191) * 256 + 158) * 256 + 55

结果将是 IP 地址的 dword 等效项。在本例中。3468664375

在此处查看有关 DWORD 等效 IP 地址的更多信息


推荐