SQL数字IP与格式化IP转换

 SQL数字IP与格式化IP相互转换,里面有调用的事例。
原作者里面有一个错误,现在已经改掉了,希望能帮到有需要的人。




 1 if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[f_IP2Int]')   and   xtype   in   (N'FN',   N'IF',   N'TF'))   
 2   drop   function   [dbo].[f_IP2Int]   
 3   GO   
 4     
 5   /**//*--字符型   IP   地址转换成数字   IP   
 6     
 7   --邹建   2004.08(引用请保留此信息)--*/   
 8     
 9   /**//*--调用示例   
10   select   Len('192.168.100.110')
11   select   dbo.f_IP2Int('192.168.100.110')   
12   select   dbo.f_IP2Int('12.168.0.1')   
13   --*/   
14   CREATE   FUNCTION   f_IP2Int(   
15   @ip   char(15)   
16   )RETURNS   bigint   
17   AS   
18   BEGIN   
19   DECLARE   @re   bigint   
20   SET   @re=0   
21   SELECT   @re=@re+LEFT(@ip,CHARINDEX('.',@ip+'.')-1)*ID   
22   ,@ip=STUFF(@ip,1,CHARINDEX('.',@ip+'.'),'')   
23   FROM(   
24   SELECT   ID=CAST(16777216   as   bigint)   
25   UNION   ALL   SELECT   65536   
26   UNION   ALL   SELECT   256   
27   UNION   ALL   SELECT   1)A   
28   RETURN(@re)   
29   END   
30   GO   
31     
32     
33     
34   if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[f_Int2IP]')   and   xtype   in   (N'FN',   N'IF',   N'TF'))   
35   drop   function   [dbo].[f_Int2IP]   
36   GO   
37     
38   /**//*--数字   IP   转换成格式化   IP   地址   
39     
40   --邹建   2004.08(引用请保留此信息)--*/   
41     
42   /**//*--调用示例   
43     
44   select   dbo.f_Int2IP(3738334565)   
45   select   dbo.f_Int2IP(212336641)   
46   --*/   
47   CREATE   FUNCTION   f_Int2IP(   
48   @IP   bigint   
49   )RETURNS   varchar(15)   
50   AS   
51   BEGIN   
52   DECLARE   @re   varchar(16)   
53 --这里的长度需是16,否则会出错.邹健兄在这里犯了这样的错误。
54 --否则你的IP转换少了一位
55   SET   @re=''   
56   SELECT   @re=@re+'.'+CAST(@IP/ID   as   varchar)   
57   ,@IP=@IP%ID   
58   from(   
59   SELECT   ID=CAST(16777216   as   bigint)   
60   UNION   ALL   SELECT   65536   
61   UNION   ALL   SELECT   256   
62   UNION   ALL   SELECT   1)a   
63   RETURN(STUFF(@re,1,1,''))   
64   END  
65 --在这里感谢原作者的尽心奉献。
66 

 

posted on 2009-07-30 14:50  jakeweny  阅读(862)  评论(0编辑  收藏  举报

导航