IP Karşılaştırma. IP Range Compare. IP2Int

by Nurgün Özgür 6. January 2012 18:41

IP adresleri veri tabanınız var ise ve aralık karşılaştırması yapmanız gerekiyorsa alttaki MSSQL fonksyonu kullanabilirsiniz. ip2int() kullanarak Verilen IP adres int dönüştürülür ve BETWEEN karşılaştırması yapabilirsiniz.

 

 

 

CREATE FUNCTION dbo.ip2int(

   @ip  varchar(15)

 )

 /*

      aralık karşılaşılaştırması yapılabilmesi için IP adresin int convert eden funct

 */

  RETURNS bigint

BEGIN

Declare @oct1 int, @oct2 int, @oct3 int, @oct4 int

      SELECT @oct1 = convert(int,LEFT(@ip,CHARINDEX('.',@ip) - 1)) ,

               @oct2 = convert(int,SUBSTRING(@ip, CHARINDEX('.',@ip) + 1,

                           CHARINDEX('.',@ip,CHARINDEX('.',

                           @ip) + 1) - (CHARINDEX('.',@ip) + 1))) ,

               @oct3 = convert(int,SUBSTRING(@ip,CHARINDEX('.',

                           @ip,CHARINDEX('.',@ip) + 1) + 1,

                           DATALENGTH(@ip) - CHARINDEX('.',

                           @ip,CHARINDEX('.',@ip) + 1) -

                           CHARINDEX('.',REVERSE(@ip)))),

           @oct4 = convert(int,RIGHT(@ip,CHARINDEX('.',REVERSE(@ip)) - 1))

      

      return @oct4+(@oct3*256)+(@oct2*256*256)+(@oct1*256.0*256.0*256.0)

 END

 

Örnek:

 

select dbo.ip2int('127.0.0.0')

 

 

Tags: , , , ,

Add comment




  Country flag

biuquote
  • Comment
  • Preview
Loading



Nurgün Özgür

Facebook

 

Nurgün Özgür Photo

1993'ten bu yana profesyonel olarak yazılım ve sistem yönetimi konularında çeşitli yerli ve yabanci kuruluşların farklı kademelerinde aktif olarak yer aldım. 2011 yılında emekliliğe ayrıldım.

 

Valid XHTML 1.0 Transitional


Tag cloud


Facebook ile giriş