最近打算使用Sharepoint做一个IP管理系统,其中涉及到对IP进行排序,比较等操作。由于我们手动输入的IP都是字符串形式,比如210.34.0.13,210.34.00.222,这样2个IP之间没有任何可比性,就算能比速度也很慢:),所以考虑把用户输入的IP实时转换为数值保存以便比较。先行保存也是加快查询速度。

在我的感觉里,Sharepoint就像一个IE里的Excel,对一个列表,也有根据公式计算出来的栏,我的目的是把210.34.0.13变成((210 * 256 + 23) * 256 + 0) * 256 + 13,根据VBA的函数,做是肯定能做,不过这个公式肯定很长。。抱着试试看的问题,想想Sharepoint是否能处理这么长这么bt的公式,于是一步步分解写出了下面这个公式:

mid([IP文字], 1, search(".", [IP文字]) - 1) * 256 * 256 * 256 +   
mid([IP文字], search(".", [IP文字]) + 1, search(".", [IP文字], search(".", [IP文字]) + 1) - search(".", [IP文字]) - 1) * 256 * 256 +  
mid([IP文字], search(".", [IP文字], search(".", [IP文字]) + 1) + 1, search(".", [IP文字], search(".", [IP文字], search(".", [IP文字]) + 1) + 1) - search(".", [IP文字], search(".", [IP文字]) + 1) - 1) * 256 +  
mid([IP文字], search(".", [IP文字], search(".", [IP文字], search(".", [IP文字]) + 1) + 1) + 1, len([IP文字]) - search(".", [IP文字], search(".", [IP文字], search(".", [IP文字]) + 1) + 1))  

试验的结果是:居然可以咳咳。log作为参考。

评论


郑海山2004-04-10 20:41:57 说: 首先是输入变麻烦了:),得输入210.034.000.013,其次,比较整数比比较字符串速度快。


匿名2004-04-09 20:56:18 说: 把210.34.0.13和210.34.00.222变为 210.34.000.013和210.34.000.222就可以比较了。

haohappy