您的位置:首页 > 其它

字符型IP和数字IP之间的转换

2011-03-09 22:35 190 查看
字符型IP和数字IP之间的转换

create function [dbo].[ip_to_int](@ip varchar(15))
returns bigint
as begin

DECLARE @IP_INT BIGINT;

SELECT @IP_INT=CONVERT(BIGINT,CONVERT(BINARY(1),CAST(parsename(@ip,1) AS INT))
+ CONVERT(BINARY(1),CAST(parsename(@ip,2) AS INT))
+ CONVERT(BINARY(1),CAST(parsename(@ip,3) AS INT))
+ CONVERT(BINARY(1),CAST(parsename(@ip,4) AS INT)));

RETURN(@IP_INT)
END
/*
SELECT DBO.[ip_to_int]('218.83.152.2')

--------------------
43537370

(1 行受影响)
*/

create function [dbo].[int_to_ip](@ip_int bigint)
returns varchar(20)
as
begin
declare @ip varchar(15);

select @ip=ltrim(convert(int,substring(CONVERT(binary(4),@ip_int),4,1)))+'.'+
ltrim(convert(int,substring(CONVERT(binary(4),@ip_int),3,1)))+'.'+
ltrim(convert(int,substring(CONVERT(binary(4),@ip_int),2,1)))+'.'+
ltrim(convert(int,substring(CONVERT(binary(4),@ip_int),1,1)));

return(@ip)
end

/*
SELECT DBO.[int_to_ip](43537370)

--------------------
218.83.152.2

(1 行受影响)

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: