Skip to content

Instantly share code, notes, and snippets.

@mikeobrien
Created January 7, 2015 04:19
Show Gist options
  • Save mikeobrien/1f93b32e5021f73b93c3 to your computer and use it in GitHub Desktop.
Save mikeobrien/1f93b32e5021f73b93c3 to your computer and use it in GitHub Desktop.
Converting CIDR block to IPv4 address range
UPDATE GeoLite2CityBlocks
SET network_start = (CAST(LEFT(Network, CHARINDEX('.', Network) - 1) AS bigint) * 16777216) |
(CAST(SUBSTRING(Network, CHARINDEX('.', Network) + 1, CHARINDEX('.', Network, CHARINDEX('.', Network) + 1) -
CHARINDEX('.', Network) - 1) AS bigint) * 65536) |
(CAST(SUBSTRING(Network, CHARINDEX('.', Network, CHARINDEX('.', Network) + 1) + 1,
CHARINDEX('.', Network, CHARINDEX('.', Network, CHARINDEX('.', Network) + 1) + 1) -
CHARINDEX('.', Network, CHARINDEX('.', Network) + 1) - 1) AS bigint) * 256) |
CAST(SUBSTRING(Network,CHARINDEX('.', Network, CHARINDEX('.', Network, CHARINDEX('.', Network) + 1) + 1) + 1,
CHARINDEX('/', Network) - CHARINDEX('.', Network, CHARINDEX('.', Network,
CHARINDEX('.', Network) + 1) + 1) - 1) AS bigint)
WHERE CHARINDEX('.', Network) > 0
UPDATE GeoLite2CityBlocks
SET network_end = network_start | (POWER(2, (32 - CAST(RIGHT(Network, LEN(Network) -
CHARINDEX('/', Network)) AS bigint))) - 1)
WHERE CHARINDEX('.', Network) > 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment