按子网查询ipaddresses

时间:2009-07-07 15:01:57

标签: sql-server-2005

我有一个MS SQLServer 2005表,其中包含一个ipaddress列,我想按子网计算条目。

不幸的是,ipaddress列是一个包含示例数据的varchar: 192.168.10.20 10.1.2.3

我认为最好的方法是将ipaddress转换为整数,然后我可以应用适当的位掩码。

有关于如何将4个八位字节的字符串转换为整数的建议吗?

2 个答案:

答案 0 :(得分:1)

要将4点缀的点缀符号转换为BIGINT,我们可以执行以下操作。

DECLARE @IP CHAR(15)SET @ IP ='192.168.123.123'

选择(CONVERT(BIGINT,PARSENAME(@ IP,1))+      CONVERT(BIGINT,PARSENAME(@ IP,2))* 256 +      CONVERT(BIGINT,PARSENAME(@ IP,3))* 65536 +      CONVERT(BIGINT,PARSENAME(@ IP,4))* 16777216)

从那里开始,用4294967040(255.255.255.0)得到/ 24子网是一件非常简单的事情

感谢Less Than Dot代码。

答案 1 :(得分:0)

您也可以使用PARSENAME函数执行此操作,因为它显示为here