如何对ip地址进行比较判断

vickorfox 2009-04-17 03:51:42
数据库里的一张表hostinfo,有个字段 是ip地址,

如何把某一个ip地址段内的数据查询出来呢?
sql 语句该怎么写,ip地址怎样进行判断比较?
...全文
107 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tjccn_wx 2009-04-19
  • 打赏
  • 举报
回复
我汗,那用这么复杂,直接比字符串不就ok了?
  • 打赏
  • 举报
回复
解决就好。
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_IP2Int]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_IP2Int]
GO

--1. 字符串IP地址转换成IP数值函数。
CREATE FUNCTION dbo.f_IP2Int(
@ip char(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
if dbo.f_IP2Int('4.43.69.100' ) between dbo.f_IP2Int('4.43.69.96') and dbo.f_IP2Int('4.208.48.255')
print 'OK'
else
Print 'NO'

/*
OK

*/
vickorfox 2009-04-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 duset 的回复:]
SQL code
select * from t where dbo.fn_ip_to_in(ip) between dbo.fn_ip_to_in(ip_start) and dbo.fn_ip_to_in(ip_end)
--select * from t where ip between dbo.fn_ip_to_in(192.168.1.1) and dbo.fn_ip_to_in(192.168.1.255)
[/Quote]

谢谢你哈...
jianjian51 2009-04-17
  • 打赏
  • 举报
回复
具体思路是这样的 吧ip拆成4段 比如 127.3.2.1
第一段127*255*255*255 第二段是3*255*255
第三段是2*255 第四段 1 把这数值加起来城一个值 然后用大于小于来查段
duset 2009-04-17
  • 打赏
  • 举报
回复

select * from t where dbo.fn_ip_to_in(ip) between dbo.fn_ip_to_in(ip_start) and dbo.fn_ip_to_in(ip_end)
--select * from t where ip between dbo.fn_ip_to_in(192.168.1.1) and dbo.fn_ip_to_in(192.168.1.255)
duset 2009-04-17
  • 打赏
  • 举报
回复
将IP转换为整型

CREATE FUNCTION [dbo].[fn_ip_to_int]
(
@ip VARCHAR(20)
)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
ws_hgo 2009-04-17
  • 打赏
  • 举报
回复
没有看懂
htl258_Tony 2009-04-17
  • 打赏
  • 举报
回复
你想怎么查?

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧