[英]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 FROM
和IP 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_from
和ip_to
之間的所有行?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.