当前位置:  开发笔记 > 数据库 > 正文

SQL计算IP列中的不同子网

如何解决《SQL计算IP列中的不同子网》经验,为你挑选了1个好方法。

我需要获取一个IP列中所有不同子网的计数,并按MS SQL上的子网进行分组.ie ..计算所有子网为192.168.0,192.168.1,10.10.10的ips等等.

任何帮助表示赞赏.谢谢



1> Tadmas..:

这不是超级高效的,但假设地址存储在名为varchar的列中IPAddress,您可以执行以下操作:

SELECT
    SUBSTRING(IPAddress, 1, LEN(IPAddress) - CHARINDEX('.',REVERSE(IPAddress))),
    COUNT(*)
FROM
    ...
GROUP BY
    SUBSTRING(IPAddress, 1, LEN(IPAddress) - CHARINDEX('.',REVERSE(IPAddress)))

这还没有经过测试,所以我可能会在一个地方离开或错过一个括号.

基本的想法是,你想通过找到最后一个点来切断最后一个点,并找到最后一个点,而不是反转字符串并找到第一个点,这CHARINDEX将非常容易.要将"第一个点"位置转换回原始字符串中的"最后一个点"位置,请从原始长度中减去该位置.

(如果我的假设是错误的并且它没有存储为文本,除非您同时提供数据类型,否则您不太可能得到有意义的答案.)

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有