###Naming
Naming
###IPv4 address decimal conversion
IPv4 address decimal conversion
###Naming
###IPv4 address decimal conversion
Naming
IPv4 address decimal conversion
While dnoeth's answer dnoeth's answer provides a good solution I thought the original code itself could still be improved on some general aspects.
While dnoeth's answer provides a good solution I thought the original code itself could still be improved on some general aspects.
While dnoeth's answer provides a good solution I thought the original code itself could still be improved on some general aspects.
IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'dbo.fn_IPv4DotNotationToDecimal') AND xtype IN (N'FN', N'IF', N'TF'))
DROP FUNCTION dbo.fn_IPv4DotNotationToDecimal;
CREATE FUNCTION dbo.fn_IPv4DotNotationToDecimal (@Ipv4AddressString varchar(15))
RETURNS INTBIGINT
AS
BEGIN
/* Returns the decimal version of an IPv4 address stored as a string.
* Ex: '192.168.1.2' returns 3232235778 */
DECLARE @IPv4Decimal INT;BIGINT;
SET @IPv4Decimal =
CONVERT(BIGINT, PARSENAME(@Ipv4AddressString, 1)) * POWER(256, 0)
+ CONVERT(BIGINT, PARSENAME(@Ipv4AddressString, 2)) * POWER(256, 1)
+ CONVERT(BIGINT, PARSENAME(@Ipv4AddressString, 3)) * POWER(256, 2)
+ CONVERT(BIGINT, PARSENAME(@Ipv4AddressString, 4)) * POWER(256, 3);
IF (@IPv4Decimal IS NULL) SET @IPv4Decimal = 0;
RETURN @IPv4Decimal;
END;
IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'dbo.fn_IPv4DotNotationToDecimal') AND xtype IN (N'FN', N'IF', N'TF'))
DROP FUNCTION dbo.fn_IPv4DotNotationToDecimal;
CREATE FUNCTION dbo.fn_IPv4DotNotationToDecimal (@Ipv4AddressString varchar(15))
RETURNS INT
AS
BEGIN
/* Returns the decimal version of an IPv4 address stored as a string.
* Ex: '192.168.1.2' returns 3232235778 */
DECLARE @IPv4Decimal INT;
SET @IPv4Decimal =
CONVERT(BIGINT, PARSENAME(@Ipv4AddressString, 1)) * POWER(256, 0)
+ CONVERT(BIGINT, PARSENAME(@Ipv4AddressString, 2)) * POWER(256, 1)
+ CONVERT(BIGINT, PARSENAME(@Ipv4AddressString, 3)) * POWER(256, 2)
+ CONVERT(BIGINT, PARSENAME(@Ipv4AddressString, 4)) * POWER(256, 3);
IF (@IPv4Decimal IS NULL) SET @IPv4Decimal = 0;
RETURN @IPv4Decimal;
END;
IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'dbo.fn_IPv4DotNotationToDecimal') AND xtype IN (N'FN', N'IF', N'TF'))
DROP FUNCTION dbo.fn_IPv4DotNotationToDecimal;
CREATE FUNCTION dbo.fn_IPv4DotNotationToDecimal (@Ipv4AddressString varchar(15))
RETURNS BIGINT
AS
BEGIN
/* Returns the decimal version of an IPv4 address stored as a string.
* Ex: '192.168.1.2' returns 3232235778 */
DECLARE @IPv4Decimal BIGINT;
SET @IPv4Decimal =
CONVERT(BIGINT, PARSENAME(@Ipv4AddressString, 1)) * POWER(256, 0)
+ CONVERT(BIGINT, PARSENAME(@Ipv4AddressString, 2)) * POWER(256, 1)
+ CONVERT(BIGINT, PARSENAME(@Ipv4AddressString, 3)) * POWER(256, 2)
+ CONVERT(BIGINT, PARSENAME(@Ipv4AddressString, 4)) * POWER(256, 3);
IF (@IPv4Decimal IS NULL) SET @IPv4Decimal = 0;
RETURN @IPv4Decimal;
END;