我有一个MS SQLServer 2005表,其中包含一个ipaddress列,我想按子网计算条目。
不幸的是,ipaddress列是一个包含示例数据的varchar: 192.168.10.20 10.1.2.3
我认为最好的方法是将ipaddress转换为整数,然后我可以应用适当的位掩码。
有关于如何将4个八位字节的字符串转换为整数的建议吗?
答案 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。