IP地址转化为数字,charindex ,SUBSTRING

  SET NOCOUNT ON;
  declare  @I_PCity table
    (
     IPStart  nvarchar(255),
      Area   nvarchar(255),
       CityID int,
        IPID  int 

    )
      declare @IPStart nvarchar(255),
       @diana int,   --存放点
       @dianb int,
       @dianc int,

       @liea bigint,    -- 存放列
       @lieb  bigint,
       @liec bigint,
       @lied bigint,

       @intlon bigint   --存放化为的整数
     insert into  @I_PCity(IPStart, Area, CityID, IPID ) select  IPStart,  Area, CityID, IPID   from I_IPCity (nolock)  where IPID>= 430000   and IPStart is not null and IP3 is null
    --
     while( exists(select top 1 * from @I_PCity))
     begin

    set @IPStart= (select top 1 IPStart from @I_PCity  );
    set @diana= charindex(‘.‘,@IPStart)       --第一个点的下标
    set @dianb= charindex(‘.‘,@IPStart, @diana +1 )  --第二个点的下标
    set @dianc= charindex(‘.‘,@IPStart, @dianb  +1 )  --第三个点的下标

    set @liea  =  SUBSTRING(@IPStart,1,@diana-1)    --第一列的值
    set @lieb  =SUBSTRING(@IPStart,@diana+1,@[email protected]1 )--第二列的值
    set @liec  =SUBSTRING(@IPStart,@dianb+1,@[email protected]1 )--第三列的值
    set @lied  =SUBSTRING(@IPStart,@dianc+1, LEN(@IPStart))--第四列的值
    set @intlon=  @lied+(@liec*1000)+(@lieb*1000000)+(@liea*1000000000)  --拼为整数
        update I_IPCity set IP3 [email protected]   where IPID=  (select top 1 IPID from @I_PCity)
         delete top(1) from @I_PCity
     end

返回前台所查到的结果:

USE [91hurong]
GO
/****** Object:  StoredProcedure [dbo].[ProIP]    Script Date: 08/13/2015 08:40:16 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE  [dbo].[ProIP]
    -- Add the parameters for the stored procedure here
   @str  varchar(50)
AS
BEGIN

    declare @IPStart nvarchar(255), --存放传入的数据
       @diana int,   --存放点
       @dianb int,
       @dianc int,

       @liea bigint,    -- 存放列
       @lieb  bigint,
       @liec bigint,
       @lied bigint,

       @intlon bigint   --存放化为的整数
    set @IPStart= @str;               --传入的IP‘1.11.6.6‘
     -- set @IPStart= ‘1.11.6.6‘;
    set @diana= charindex(‘.‘,@IPStart)       --第一个点的下标
    set @dianb= charindex(‘.‘,@IPStart, @diana +1 )  --第二个点的下标
    set @dianc= charindex(‘.‘,@IPStart, @dianb  +1 )  --第三个点的下标

    set @liea  =  SUBSTRING(@IPStart,1,@diana-1)    --第一列的值
    set @lieb  =SUBSTRING(@IPStart,@diana+1,@[email protected]1 )--第二列的值
    set @liec  =SUBSTRING(@IPStart,@dianb+1,@[email protected]1 )--第三列的值
    set @lied  =SUBSTRING(@IPStart,@dianc+1, LEN(@IPStart))--第四列的值
    set @intlon=  @lied+(@liec*1000)+(@lieb*1000000)+(@liea*1000000000)  --拼为整数

      declare @inta  bigint
      set @inta=(select top 1  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)
      select top 1 * 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‘

说明:

 ‘Arg.ea‘  对应位置

:1 2 3 4 5 6

 charindex(‘.‘,‘Arg.ea‘) >0   --如果大于零,则表示字符串Area中含有字符串CityName; 此例为true

 charindex(‘.‘,‘Arg.ea‘,2 )  -- 从第二个位置后,也就是从 字母‘r‘后开始找,先判断 ‘g’是否为‘.’ ,为否;继续判断‘.’是否为‘.’,此表达式为true

 SUBSTRING(‘Arg.ea‘,1,2)  --截取 字符串 ‘Arg.ea‘中 第一个位置到第二个位置 ;也就是‘Ar’
时间: 2024-08-27 15:49:42

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

点分十进制形式的ip地址转化为十六进制数

#include "csapp.h" /*本代码将点分十进制形式的ip地址转化为十六进制数并且输出*/ //返回一个字符串代表的整数 int str2int(char *str) {   //要注意变量的初始化   int value=0;   //字符串长度   int length = strlen(str);   //基数   int base=1;   while(--length!=0) {     base*=10;   }   while(*str!='\0') {   

数字转IP地址函数

--------------------------------------------------------------------- -- Author : htl258(Tony) -- Date   : 2010-06-19 10:34:31 -- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) --          Jul  9 2008 14:43:34 --          Copyrig

域名转化到IP地址的实现

在linux中,有一些函数可以实现主机名和地址的转化,最常见的有gethostbyname().gethostbyaddr()等,它们都可以实现IPv4和IPv6的地址和主机名之间的转化.其中gethostbyname()是将主机名转化为IP地址,gethostbyaddr()则是逆操作,是将IP地址转化为主机名. 函数原型: 1 #include <netdb.h> 2 3 struct hostent* gethostbyname(const char* hostname); 4 5 st

JAVA【long值与ip地址互转】 - ip的判别

阅读前提: 您需要了解什么是 ip地址 本章目的:实现ip地址和 long类型值的互转 一.应用范围 一般用在登录限制.查找IP所在城市等需求中,windows的ping命令也支持整数形式的IP. 二.关键技术点 将IP地址转化成整数的方法如下: 1.通过String的indexOf方法找出IP字符串中的点"."的位置. 2.根据点的位置,使用String的substring方法把IP字符串分成4段. 3.使用Long的parseLong方法把子段转化成一个3位整数. 4.通过左移位操

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

/// <summary> /// IP地址转化 /// </summary> /// <param name="ipaddr">整型的IP地址</param> /// <returns>字符串的IP地址</returns> private string UintIPToStringIP(uint ipaddr) { string hexStr = ipaddr.ToString("X8");

C#中IP地址转换为数值的方法

任何语言都通用的方法转换 IP 地址 a.b.c.d ==> a*256*256*256+b*256*256+c*256+d ===> 256*(c+256*(b+256*a)) +d 示例: 72.167.124.214 ==> 72*256*256*256+167*256*256+124*256+214 ===> 256*(1 24+256*(167+256*72))+214 .net 提供的方法转换 IP 地址 // 字符串转换为数字 System.Net.IPAddress

域名解析与IP地址的关系

1.域名解析DNS (1)域名服务器:完成域名地址到IP地址转化的计算机. (2)域名服务器上运行着一个数据库系统: (3)数据库中保存着域名地址与IP地址. (4)用户主机需要把域名地址转化为IP地址时向域名服务器提出查询请求: (5)域名服务器根据用户请求进行查询并把结果返回给用户主机. 2.IP地址与域名的对应关系 (1)一对一: Internet上IP地址是唯一的,一个IP地址对应着唯一的一台主机. 给定一个域名地址能找到一个唯一对应的IP地址. (2)一对多: 一台计算机提供多个服务,

ip地址扫描

自己写的一个ip地址扫描的shell脚本,功能是输入ip地址和掩码,通过ping检测整个网段的ip地址,输出ping的结果. 主要的几个函数如下: 1.ip地址转化为数值,方便计算 ip2num() { ip=$1 a=`echo $ip |awk -F '.' '{print $1}'` b=`echo $ip |awk -F '.' '{print $2}'` c=`echo $ip |awk -F '.' '{print $3}'` d=`echo $ip |awk -F '.' '{pr

网络编程懒人入门(九):通俗讲解,有了IP地址,为何还要用MAC地址?

1.前言 标题虽然是为了解释有了 IP 地址,为什么还要用 MAC 地址,但是本文的重点在于理解为什么要有 IP 这样的东西.本文对读者的定位是知道 MAC 地址是什么,IP 地址是什么. (本文同步发布于:http://www.52im.net/thread-2067-1-1.html) 2.关于作者 翟志军,个人博客地址:https://showme.codes/,Github:https://github.com/zacker330.感谢作者的原创分享. 作者的另一篇<即时通讯安全篇(七)