使用SQL查询ip段(前三段不变)
来源:互联网 发布:js输出乘法表 编辑:程序博客网 时间:2024/05/16 09:23
今天在查询数据的时候,突然要查指定IP范围内的IP总数,思考了一下,主要使用charindex和reverse,下面是详细的SQL语句
DECLARE @IP varchar(50),@IPSub varchar(40),@range varchar(10),@beginIP varchar(50),@endIP varchar(50),@max int,@min int,@count intSET @IP='62.145.88.0/24'SET @range=right(@IP,charindex('.',reverse(@IP))-1)--获取第三个ip后的字符串--PRINT @rangeSET @IPSub= substring(@IP,0,len(@IP)-charindex('.',reverse(@IP))+2)--获取ip前三段字符串SET @max=substring(@range,0,charindex('/',@range))--获取最大值,假装的--PRINT @maxSET @min=substring(@range,charindex('/',@range)+1,len(@range)-charindex('/',@range))--获取最小值,假装的--PRINT @minIF @max<@minbeginSET @beginIP=@IPSub+convert(varchar(5),@max)SET @endIP=@IPSub+convert(varchar(5),@min)PRINT @beginIPPRINT @endIPendelsebeginSET @beginIP=@IPSub+convert(varchar(5),@min)SET @endIP=@IPSub+convert(varchar(5),@max)PRINT @beginIPPRINT @endIPendSET @count=(SELECT count(*) FROM UserActivityLog where RemoteAddr BETWEEN @beginIP AND @endIP)PRINT @count
但是这方法也是有问题的,因为这里使用了字符串来查询,这里可以考虑使用
parsename(@ip,4)*cast(16777216 as bigint)+parsename(@ip,3)*65536+ parsename(@ip,2)*256+parsename(@ip,1)
- 使用SQL查询ip段(前三段不变)
- 如何使用SQL查询IP地址所属IP段
- SQL查询IP段和IP与十进制转化
- oracle sql中查询ip段内的记录
- 使用SQL查询表字段列的备注信息
- 数据库中如何使用SQL查询连续号码段
- 使用sql syscolumns 查询表字段 并且拼接代码
- SQL查询连续号码段
- SQL查询连续号码段
- SQL多字段模糊查询
- sql server 表字段查询
- sql语句查询表字段
- SQL 查询表字段信息
- php和mysql关于ip段查询
- 常用 索引 约束 查询--格式不变(插入代码-->SQL)
- 查询某时间段的SQL
- sql查询语句(修改表字段)
- 查询未知名字段的SQL
- 用Parcelable接口传递Bitmap
- Ubuntu系统编码
- U盘里的文件怎么会不见了
- [AndEngine学习教程] 第6节 模拟手柄控制器
- MyEclipse生成Java帮助文档
- 使用SQL查询ip段(前三段不变)
- 类似系统设置的sharedPreferences
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
- 判断设备的类型ipad或者iphone,调用自带应用,禁止锁屏,设置icon上的数字
- 堆排序算法
- 微博在中国的创新
- #算法导论笔记#字符串匹配
- [AndEngine学习教程] 第7节 场景精灵间的坐标转换
- 中断控制---Tasklet