我有一个IP数据库:startip endip address
24.69.255.0 24.71.169.255 ..
24.71.170.0 24.72.92.255 ..
24.72.93.0 24.72.93.255 ..
用sql如何查询某个IP在哪两个IP段之间?或者有什么合理的查询方式都可以。
24.69.255.0 24.71.169.255 ..
24.71.170.0 24.72.92.255 ..
24.72.93.0 24.72.93.255 ..
用sql如何查询某个IP在哪两个IP段之间?或者有什么合理的查询方式都可以。
解决方案 »
- 怎么连接数据库?
- 谁能帮我做个VB啊,我刚开始学
- 请问vb怎么关闭打开的批处理窗口?
- 关于vb6的datagrid控件问题
- 在VB中的下拉组合中如何添加局域网中可用的SQL服务器及相关的数据库。
- 在线等待,十万火急!!!高分求解关于用mci控件实现录音的问题!!!
- 一个时间计算的问题,快来帮帮我啊!!!
- 请问dap中如何执行没有返回记录的存储查询.
- *********************请各位大侠,如果listbox1的item宽度大于listbox的宽度......来者有分噢!!!****************************谢谢!谢谢!谢谢!.....
- 问了半天了,还是没解决?
- sql 如何在字母和数值中找最大值?
- VB VSFlexdrig做好分页后不会做翻页
form tb
where startip<='你要查询的IP' and endip >='你要查询的IP'
--> 生成测试数据: [tableip]
if object_id('[tableip]') is not null drop table [tableip]
create table [tableip] (id int,startip varchar(15),endip varchar(15),address nvarchar(6))
insert into [tableip]
select 1,'024.089.048.000','024.089.063.255','ARIN' union all
select 2,'024.089.064.000','024.089.127.255','加拿大' union all
select 3,'024.089.128.000','024.089.191.255','美国' union all
select 4,'024.089.192.000','024.089.255.255','加拿大' union all
select 5,'024.090.000.000','024.100.063.255','美国' union all
select 6,'024.100.064.000','024.103.255.255','ARIN' union all
select 7,'024.104.000.000','024.104.159.255','美国' union all
select 8,'024.104.160.000','024.104.255.255','ARIN'--SQL查询如下:go--这个函数不用改.直接搬着来用.
CREATE FUNCTION dbo.f_IP2Int(
@ip varchar(15)
)RETURNS bigint
AS
BEGIN
DECLARE @re bigint
SET @re=0
SELECT @re=@re+LEFT(@ip,CHARINDEX('.',@ip+'.')-1)*ID
,@ip=STUFF(@ip,1,CHARINDEX('.',@ip+'.'),'')
FROM(
SELECT ID=CAST(16777216 as bigint)
UNION ALL SELECT 65536
UNION ALL SELECT 256
UNION ALL SELECT 1)a
RETURN(@re)
END
GO--要查的IP
DECLARE @ip VARCHAR(15);SET @ip='24.93.121.22';SELECT *
FROM [tableip]
WHERE dbo.f_IP2Int(@ip)>=dbo.f_IP2Int(startip)
and dbo.f_IP2Int(@ip)<=dbo.f_IP2Int(endip) ;
GO--删除测试表,函数.
DROP TABLE [tableip]
DROP FUNCTION dbo.f_IP2Intid startip endip address
----------- --------------- --------------- -------
5 024.090.000.000 024.100.063.255 美国(1 行受影响)
select * Form TB WHERE FD_IP BETWEEN('192.168.1.100' and '192.168.1.200')