1. SET NOCOUNT ON;
  2. declare @I_PCity table
  3. (
  4. IPStart nvarchar(),
  5. Area nvarchar(),
  6. CityID int,
  7. IPID int
  8.  
  9. )
  10. declare @IPStart nvarchar(),
  11. @diana int, --存放点
  12. @dianb int,
  13. @dianc int,
  14.  
  15. @liea bigint, -- 存放列
  16. @lieb bigint,
  17. @liec bigint,
  18. @lied bigint,
  19.  
  20. @intlon bigint --存放化为的整数
  21. insert into @I_PCity(IPStart, Area, CityID, IPID ) select IPStart, Area, CityID, IPID from I_IPCity (nolock) where IPID>= and IPStart is not null and IP3 is null
  22. --
  23. while( exists(select top * from @I_PCity))
  24. begin
  25.  
  26. set @IPStart= (select top IPStart from @I_PCity );
  27. set @diana= charindex('.',@IPStart) --第一个点的下标
  28. set @dianb= charindex('.',@IPStart, @diana + ) --第二个点的下标
  29. set @dianc= charindex('.',@IPStart, @dianb + ) --第三个点的下标
  30.  
  31. set @liea = SUBSTRING(@IPStart,,@diana-) --第一列的值
  32. set @lieb =SUBSTRING(@IPStart,@diana+,@dianb-@diana- )--第二列的值
  33. set @liec =SUBSTRING(@IPStart,@dianb+,@dianc-@dianb- )--第三列的值
  34. set @lied =SUBSTRING(@IPStart,@dianc+, LEN(@IPStart))--第四列的值
  35. set @intlon= @lied+(@liec*)+(@lieb*)+(@liea*) --拼为整数
  36. update I_IPCity set IP3 =@intlon where IPID= (select top IPID from @I_PCity)
  37. delete top() from @I_PCity
  38. end

返回前台所查到的结果:

  1. USE [91hurong]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[ProIP] Script Date: 08/13/2015 08:40:16 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. ALTER PROCEDURE [dbo].[ProIP]
  9. -- Add the parameters for the stored procedure here
  10. @str varchar()
  11. AS
  12. BEGIN
  13.  
  14. declare @IPStart nvarchar(), --存放传入的数据
  15. @diana int, --存放点
  16. @dianb int,
  17. @dianc int,
  18.  
  19. @liea bigint, -- 存放列
  20. @lieb bigint,
  21. @liec bigint,
  22. @lied bigint,
  23.  
  24. @intlon bigint --存放化为的整数
  25. set @IPStart= @str; --传入的IP'1.11.6.6'
  26. -- set @IPStart= '1.11.6.6';
  27. set @diana= charindex('.',@IPStart) --第一个点的下标
  28. set @dianb= charindex('.',@IPStart, @diana + ) --第二个点的下标
  29. set @dianc= charindex('.',@IPStart, @dianb + ) --第三个点的下标
  30.  
  31. set @liea = SUBSTRING(@IPStart,,@diana-) --第一列的值
  32. set @lieb =SUBSTRING(@IPStart,@diana+,@dianb-@diana- )--第二列的值
  33. set @liec =SUBSTRING(@IPStart,@dianb+,@dianc-@dianb- )--第三列的值
  34. set @lied =SUBSTRING(@IPStart,@dianc+, LEN(@IPStart))--第四列的值
  35. set @intlon= @lied+(@liec*)+(@lieb*)+(@liea*) --拼为整数
  36.  
  37. declare @inta bigint
  38. set @inta=(select top IP3 from I_IPCity where IP3>@intlon and IPStart is not null and IPID is not null and IP3 is not null order by IP3 asc)
  39. select top * from I_IPCity where IP3<@inta and IPStart is not null and IPID is not null and IP3 is not null order by IP3 desc --返回'61.177.117.6'在表中对应的数据
    END
    exec ProIP '61.177.117.6'

说明:

  1. 'Arg.ea' 对应位置
  2.  
  3. :
  4.  
  5. charindex('.','Arg.ea') > --如果大于零,则表示字符串Area中含有字符串CityName 此例为true
  6.  
  7. charindex('.','Arg.ea', ) -- 从第二个位置后,也就是从 字母'r'后开始找,先判断 g’是否为‘.’ ,为否;继续判断‘.’是否为‘.’,此表达式为true
  8.  
  9. SUBSTRING('Arg.ea',,) --截取 字符串 'Arg.ea' 第一个位置到第二个位置 ;也就是‘Ar

IP地址转化为数字,charindex ,SUBSTRING的更多相关文章

  1. [转]字符型IP地址转换成数字IP的SQL函数

    使用SQL函数可以实现许多的功能,下面为您介绍的是字符型IP地址转换成数字IP的SQL函数示例,供您参考,希望对您学习SQL函数能够有所帮助.      /**//*--调用示例       sele ...

  2. 【Go】IP地址转换:数字与字符串之间高效转换

    转载:https://blog.thinkeridea.com/201903/go/ip2long.html IP 地址库中 IP 地址的保存格式一般有两种,一种是点分十进制形式(192.168.1. ...

  3. 将IP地址转化为整数

    $ip = 'IP地址';echo $intip = sprintf('%u',ip2long($ip)); //转换为无符号整型echo long2ip($intip);//将整型转换为ip

  4. ip地址转化代码实例

    /*@author: lgh@ * * */ #include <stdio.h> #include <string.h> #include <unistd.h> ...

  5. 数字转IP地址函数

    --------------------------------------------------------------------- -- Author : htl258(Tony) -- Da ...

  6. (C#)IP地址与数字地址相互转换

    站长网IP查询地址:http://tool.chinaz.com/ip/ 和ip地址转换为数字的工具地址:http://www.msxindl.com/tools/ip/ip_num.asp 可以看到 ...

  7. 域名转化到IP地址的实现

    在linux中,有一些函数可以实现主机名和地址的转化,最常见的有gethostbyname().gethostbyaddr()等,它们都可以实现IPv4和IPv6的地址和主机名之间的转化.其中geth ...

  8. IP地址与数字地址相互转换

    /// <summary> /// IP地址转换成数字 /// </summary> /// <param name="addr">IP地址&l ...

  9. C# 获取本机IP地址以及转换字符串

    /// <summary> /// IP地址转化 /// </summary> /// <param name="ipaddr">整型的IP地址 ...

随机推荐

  1. springdatajpa使用informix数据库出现no such column 异常的问题

    本博客属原创,转载请注明出处 问题描述: 环境: spring data jpa版本4.0.3 informix驱动版本3.50.JC9 程序结构 jpa配置文件对应的jdbc配置 dao层继承jpa ...

  2. SqlServer与MySql语法比较

    1.复制表(包括表结构.表数据) SqlServer: Select * into user_copy from user MySql: CREATE TABLE user_copy LIKE use ...

  3. 编译OpenCV遇到Qmake问题

    1.Ubuntu安装OpenCv,出现:qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or ...

  4. Windows 10 常用软件推荐

    QQ/TIM 大众的通讯工具,十多年之后的今天,依然是国内常驻用户第一的通讯工具 截图.远程桌面.视频会议.文件传送依旧是非常好用 TIM 算是轻聊版的升级版 微信 for Windows 近年新兴的 ...

  5. 基于libVLC的视频播放器

    本文来自于:http://blog.csdn.net/leixiaohua1020/article/details/42363079 最简单的基于libVLC的例子:最简单的基于libVLC的视频播放 ...

  6. Linux系统编程@进程管理(一)

    课程目标: 构建一个基于主机系统的多客户即时通信/聊天室项目 涉及的理论知识 进程控制:僵尸进程/孤儿进程.进程控制.守护进程... 进程间通信:管道.命名管道.信号... 多线程编程: 锁.信号量. ...

  7. day27-2 pandas模块

    目录 pandas Series(了解) DataFrame 内置方法 处理缺失值 合并数据 取值 把表格传入excel文件中 把表格从excel中取出来 高级(了解) pandas 处理表格等文件/ ...

  8. 阿里云API网关!

    API 网关(API Gateway)提供高性能.高可用的 API 托管服务,帮助用户对外开放其部署在 ECS.容器服务等阿里云产品上的应用,提供完整的 API 发布.管理.维护生命周期管理.用户只需 ...

  9. iview datepicker 选择的时间少一天

    使用iview的datepicker时间选择器发现获取的value值是比实际要少一天,严格来说应该是时间格式不一样,datepicker获取的时间是UTC时间格式,也就是:yyyy-MM-ddTHH: ...

  10. 训练1-L

    n个人一起排队接水,第i个人需要ai的时间来接水. 1 <= n <= 1000 1 <= a,i<= 1000 同时只能有一个人接水,正在接水的人和没有接水的人都需要等待. ...