국가별 IP 테이블에서 값을 비교하기 위해 "xxx.xxx.xxx.xxx" 형식의 IP Address를 다음과 같이 DB에 있는 값과 비교할 수 있도록 변환해준다.


아래 예제는 C#에서 사용하고 있는 클래스중 값을 IP Address를 Long 타입으로 변환하는 함수이다.

static public uint IPAddressToLongBackwards(string IPAddr)
{
  System.Net.IPAddress oIP=System.Net.IPAddress.Parse(IPAddr);
  byte[] byteIP=oIP.GetAddressBytes();

  uint ip=(uint)byteIP[0]<<24;
  ip+=(uint)byteIP[1]<<16;
  ip+=(uint)byteIP[2]<<8;
  ip+=(uint)byteIP[3];

  return ip;
}

실제 SQL 문은 다음과 같이 구성하면 된다. 아래 예제 SQL문에서 @ipaddr_no는 위의 함수를 이용하여 변환된 값이다.

SELECT * FROM GeoIPCountryWhois WHERE @ipaddr_no BETWEEN start_ip_no AND end_ip_no


//