• I've always liked storing IP's as binary(4) - still 4 bytes, but simpler conversions:

    DECLARE @IpBin binary(4)

    DECLARE @IpString varchar(15)

    SET @IpString = '101.202.33.44'

    --convert string to binary

    SET @IpBin =CONVERT(binary(1), CONVERT(tinyint, PARSENAME(@IpString, 4)))

    + CONVERT(binary(1), CONVERT(tinyint, PARSENAME(@IpString, 3)))

    + CONVERT(binary(1), CONVERT(tinyint, PARSENAME(@IpString, 2)))

    + CONVERT(binary(1), CONVERT(tinyint, PARSENAME(@IpString, 1)))

    SELECT @IpBin

    --convert binary to string

    SELECT

    CAST(CAST(SUBSTRING(@IpBin,1,1) AS tinyint) AS varchar(3)) + '.' +

    CAST(CAST(SUBSTRING(@IpBin,2,1) AS tinyint) AS varchar(3)) + '.' +

    CAST(CAST(SUBSTRING(@IpBin,3,1) AS tinyint) AS varchar(3)) + '.' +

    CAST(CAST(SUBSTRING(@IpBin,4,1) AS tinyint) AS varchar(3))