IP数字,数字IP

DECLARE @ip VARCHAR(60)='113.118.138.159'
DECLARE @ip_int BIGINT=[dbo].[f_IP2Int](@ip)

SELECT [IPstart], [IPend], [M1], [M2], [M3], [M4]
FROM [master].[dbo].[ipv]
WHERE ipstart < @ip_int
  AND [IPend] > @ip_int
GO

SET STATISTICS IO ON
SET STATISTICS TIME  ON

CREATE CLUSTERED INDEX ix_action ON [ipv](ipstart,[IPend])

 

 

select   dbo.f_IP2Int('113.118.138.159')  
select   dbo.f_IP2Int('12.168.0.1')  
--*/  
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

/**//*--数字   IP   转换成格式化   IP   地址  
   
--邹建   2004.08(引用请保留此信息)--*/  
   
/**//*--调用示例  
   
select   dbo.f_Int2IP(3232235531)  
select   dbo.f_Int2IP(212336641)  
*/  
CREATE   FUNCTION   [dbo].[f_Int2IP](  
@IP   bigint  
)RETURNS   varchar(15)  
AS  
BEGIN  
DECLARE   @re   varchar(15)  
SET   @re=''  
SELECT   @re=@re+'.'+CAST(@IP/ID   as   varchar)  
,@IP=@IP%ID  
from(  
SELECT   ID=CAST(16777216   as   bigint)  
UNION   ALL   SELECT   65536  
UNION   ALL   SELECT   256  
UNION   ALL   SELECT   1)a  
RETURN(STUFF(@re,1,1,''))  
END 

 

 

posted @   qanholas  阅读(720)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
历史上的今天:
2012-07-11 sqlserver开事务与不开事务的区别
点击右上角即可分享
微信分享提示