2009-07-07 56 views
0

我有一个MS SQLServer 2005表,其中包括一个ipaddress列,并且我想通过子网对条目进行计数。通过子网查询ipaddresses

不幸的是,ip地址栏是一个像样本数据为varchar: 192.168.10.20 10.1.2.3

我认为最好的办法是将ip地址转换为整数,然后我可以申请相应的位掩码。

有没有关于如何获得一个4个字节的字符串到一个整数的建议?

回答

0

你也可以使用PARSENAME函数来做到这一点,因为它是显示here

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的代码。