我有一个MS SQLServer 2005表,其中包括一个ipaddress列,并且我想通过子网对条目进行计数。通过子网查询ipaddresses
不幸的是,ip地址栏是一个像样本数据为varchar: 192.168.10.20 10.1.2.3
我认为最好的办法是将ip地址转换为整数,然后我可以申请相应的位掩码。
有没有关于如何获得一个4个字节的字符串到一个整数的建议?
我有一个MS SQLServer 2005表,其中包括一个ipaddress列,并且我想通过子网对条目进行计数。通过子网查询ipaddresses
不幸的是,ip地址栏是一个像样本数据为varchar: 192.168.10.20 10.1.2.3
我认为最好的办法是将ip地址转换为整数,然后我可以申请相应的位掩码。
有没有关于如何获得一个4个字节的字符串到一个整数的建议?
你也可以使用PARSENAME函数来做到这一点,因为它是显示here。
要将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的代码。