簡體   English   中英

查找數字是否在MySQL數據庫中不同字段中的兩個數字之間

[英]Find if number is between two numbers in different fields in a MySQL database

如何通過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"

像這樣的查詢:

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

將返回所提供的數字在IP FROMIP TO

如果你已經擁有相當於IP地址的DWORD,那么Jordan響應就可以了。

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

如果在執行查詢之前需要計算ip地址的DWORD,則可以執行以下操作。

給定一個ip地址a ,形式為part1.part2.part3.part4然后可以使用以下公式計算DWORD等效值:

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

然后你可以在你的SQL查詢中使用dword(a)結果。

206.191.158.55類的IP地址206.191.158.55

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

結果將是等效於IP地址的dword。 在這種情況下3468664375

在此處查看有關DWORD等效ip地址的更多信息。

這樣的事情怎么樣:

select *
from your_table
where ip_from <= '1265631252'
  and ip_to >= '1265631252'

即獲取' 1265631252 '介於ip_fromip_to之間的所有行?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM