try converting the ip address to a large integer to search between range, as shown below,
declare @ips table ([fromip] varchar(15), [toip] varchar(15), country varchar(5))
insert into @ips values
('5.1.82.0' , '5.1.82.255', 'PK'),
('5.39.250.0' ,'5.39.253.255','PK'),
('5.39.255.0','5.39.255.255','PK')
declare @ip as varchar(15) ='5.1.82.250'
SELECT *
FROM @IPs
WHERE (Country = 'pk') AND
cast(right('00'+PARSENAME(@ip, 4),3)+ right('00'+PARSENAME(@ip, 3),3)+right('00'+PARSENAME(@ip, 2),3) +right('00'+PARSENAME(@ip, 1),3)
AS bigint) between
cast(right('00'+PARSENAME(fromip, 4),3)+ right('00'+PARSENAME(fromip, 3),3)+right('00'+PARSENAME(fromip, 2),3) +right('00'+PARSENAME(fromip, 1),3)
AS bigint) and
cast(right('00'+PARSENAME(toip, 4),3)+ right('00'+PARSENAME(toip, 3),3)+right('00'+PARSENAME(toip, 2),3) +right('00'+PARSENAME(toip, 1),3)
AS bigint)
source
share