IP address 与 bigint 之间的转换
2016-02-03 21:06
639 查看
SELECT [dbo].f_IP2Int('60.173.12.140') -- 1017973900 select dbo.f_Int2IP(1017973900) -- 60.173.12.140 select dbo.f_IP2Int('12.168.0.1') -- 212336641 select dbo.f_Int2IP(212336641) -- 12.168.0.1
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
/*--字符型 IP 地址转换成数字 IP
--邹建 2004.08(引用请保留此信息)--*/
/*--调用示例
select dbo.f_IP2Int('192.168.0.11')
select dbo.f_IP2Int('12.168.0.1')
--*/
CREATE FUNCTION 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 exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_Int2IP]') and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[f_Int2IP]
GO
/*--数字 IP 转换成格式化 IP 地址
--邹建 2004.08(引用请保留此信息)--*/
/*--调用示例
select dbo.f_Int2IP(3232235531)
select dbo.f_Int2IP(212336641)
--*/
CREATE FUNCTION 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
资源 :
ip地址与数字相互转换的sql函数 http://www.cnblogs.com/jillzhang/archive/2007/10/24/935621.html
怎样将IP地址转换为数字 http://jingyan.baidu.com/article/200957617a9e13cb0721b4e5.html
(结束)
相关文章推荐
- C#成神之路<8> C#引用数据类型详述
- 二分查找
- 详解c++指针的指针和指针的引用
- ubuntu14.04设置静态ip
- Java并发之AbstractQueuedSynchronizer分析
- 记录mysql
- 【slighttpd】基于lighttpd架构的Server项目实战(1)—前言及设计思路
- (转)C++ stringstream介绍,使用方法与例子
- 分布式缓存学习总结
- linux目录对照命令——meld
- 【SSH框架】--Hibernate入门
- 一次dump surfacefliger 结果分析:两个activity同时出现在Z轴上
- Activity
- Android 自定义属性
- 【codevs1869】硬币购物,背包+神奇的容斥原理
- Linux命令行学习之路(六)——重定向和管道
- linux 网络命令整理
- 理解Window和WindowManager
- Graveyard
- 算法训练 旅行家的预算