用SQL语句统计IP地址前三段

ip地址|统计|语句

/* written by Jaron ,2003-07-10 */
/* 首次发表于CSDN */
/* 转载请注明出处和保留此版权信息 */

在做网站统计专家时,我们需要对IP地址段进行统计和分析,这里应用SQL-SERVER的自定义函数和存储过程实现在数据库中直接生成结果,以下代码稍作修改即可。

/* SQL语句 */

select top 99 dbo.fn_ipleft3(IPAddress),count(id) FROM tblStatisticalDetail  group by dbo.fn_ipleft3(IPAddress) order by count(id) desc

/* 自定义函数的内容 */

CREATE function fn_ipleft3(@ipaddr varchar(100))
returns nvarchar(50)
as
begin

declare @ip_resault varchar(100)
set @ip_resault=''

declare @aa varchar(100),@bb int,@cc int
set @aa=@ipaddr

set @bb=0
set @cc=charindex('.',@aa)
set @ip_resault=@ip_resault+right('00'+substring(@aa,@bb,@cc-@bb)+'.',4)

while @cc>0
begin
  set @bb=@cc+1
  set @cc=charindex('.',@aa,@bb)
  set @ip_resault=@ip_resault+right('00'+substring(@aa,@bb,case when @cc>0 then @cc-@bb else len(@aa) end)+'.',4)
end

return left(@ip_resault,11)
end

时间: 2024-10-27 21:29:44

用SQL语句统计IP地址前三段的相关文章

正则表达式取得匹配IP地址前三段js代码

只要匹配掉最后一段并且替换为空字符串就行了,正则如下:  代码如下 复制代码  /.d{1,3}$/ 匹配结尾的.n,.nn或者.nnn. 测试代码如下:  代码如下 复制代码  function replaceReg(reg,str){   return str.replace(reg,'')  }  var reg = /.d{1,3}$/;  var str = '192.168.118.101';  var str2 = '192.168.118.72';  var str3 = '19

SQL语句取得5分钟前的最新数据

怎样通过SQL语句取得5分钟前增加的最新数据呢? 这里将用到了数据库的datediff内置函数,代码如下:   sql="select * from news where datediff(n,date,getdate())<=5"

列转行-SQL语句统计问题,不想写union all

问题描述 SQL语句统计问题,不想写union all 建表测试语句: CREATE TABLE stbuu_cause109_20160331 ( intenbid BIGINT, intrsrp00 BIGINT, intrsrp01 BIGINT, intrsrp02 BIGINT, intrsrp03 BIGINT, intrsrp04 BIGINT, intrsrp05 BIGINT, intrsrp06 BIGINT ); 插入测试数据: INSERT INTO stbuu_caus

oracle sql语句统计数据写法

问题描述 oracle sql语句统计数据写法 有3张表,A表活动B表活动地区C表地区商家 A表关联B表,B表关联C表都是一对多,现在需返回活动名称,活动地区数,地区商家数 解决方案 SELECT A.活动名称COUNT(1)SUM(SELECT COUNT(1) FROM C WHERE A=B AND B=C) FROM A INNER JOIN B ON A=B GROUP BY A.活动名称 解决方案二: SELECT T1.活动 AS 活动名称 COUNT(T2.地区) AS 活动地区

求oracle sql语句统计数据

问题描述 求oracle sql语句统计数据 求oracle sql语句统计数据 要统计出勤率.迟到次数.旷工次数 签到表(ManualSign) 字段: SignId:签到表的ID ,UserId:用户ID ,SignTime:签到时间 ,SignDesc:签到备注 ,SignTag:签到标记(签到.签退) 样例记录:13, 'jiyaoqi', to_date('2015-08-18 08:00:00' ,'yyyy-MM-dd hh24:mi:ss'), '测试一下', 1 工作时间表(W

Sql Server2012 使用IP地址登录服务器的配置图文教程

最近在使用NFineBase框架+c#做一个系统的时候,在使用sql server 2012 连接数据库的时候 ,遇到几个问题. 一. 就是在本地或者远程连接别人的数据库的时候,以ip地址作为服务器名称 以SQL Server 身份验证(即输入登录名和密码)的方式登录数据库 总会出现错误 比如说会提示一下错误: 用户 'sa' 登录失败,该用户与可信 SQL Server 连接无关联. 但是使用 计算机名\实例名 这种方式就可以登录 \ 最后发现还是数据库的配置问题,解决方案如下: 我使用的是w

解决限制访问SQL Server的IP地址的办法

  我们只想使某个IP的计算机才能连接到SQLServer服务器,不允许其他客户端连接,怎么操作呢?         解决方法:可以直接在防火墙中做限制,只允许与指定的IP地址建立1433的通讯.当然,从更为安全的角度来考虑,应该把1433端口改成其他的端口.         其他解决方法1(限从指定IP接入的客户端):如果使用SQLServer2005,还可以通过端点限制的方法来实现,此方法要求一块专门的网卡,所有可以连接SQLServer的客户端均通过此网卡接入(假设此网卡的IP是192.1

sql语句统计年级分数怎么做。

问题描述 表如下IDNAMEPARENT----班级表IDNAMEMARK班级ID----成绩表1一年级01小名5032二年级02小明80431班13小红70742班14小四44653班15小七75861班26小李44672班27小吴88383班28小群654要出来这样的效果年级总分一年级283二年级233也有可能会出现这样的情况,有一个人他的班级ID直接对应年级的,也就是1或者2,怎么统计呢?? 解决方案 本帖最后由 a418857308 于 2014-08-05 20:09:23 编辑解决方

路由器充当DHCP服务器自动分配IP地址

总公司最近拓展了办公业务,在很多地区成立了子公司.由于子公司刚刚成立,没有足够的经费购置服务器,而办公用机的IP地址又准备采用DHCP自动分配的方式来进行管理,没有专门的DHCP服务器就无法实现自动分配IP地址. 笔者发现由于每个子公司在网络出口都使用了相应的路由器,所以可以在公司出口的路由设备上启用DHCP服务功能,用路由器充当DHCP服务器. 现在,笔者就以Cisco路由器为例给大家介绍一下配置方法.假设公司内部IP地址为10.30.70.1-10.30.70.255,网内客户机希望通过DH