zoukankan      html  css  js  c++  java
  • 判断IP地址是否合法的sql2000使用存储过程跟函数

    sql存储过程 判断IP是否合法

    CREATE PROCEDURE sp_IsValidIP
    @strIPAddress nvarchar(32)='192.168.1.250',
    @rstFlag bit =0 OUTPUT
    AS
    Declare @strIP nvarchar(16)     ----存放IP地址去空格字符串
    Declare @tempIP nvarchar(16)     ----存放临时IP地址字符串
    Declare @tempIPLen int    ----存放IP地址字符串长度

    Declare @ValidFlag_1 bit  ----存放IP地址字符是否是数字类型
    Declare @ValidFlag_2 bit  ----存放IP地址字符是否是数字类型
    Declare @ValidFlag_3 bit  ----存放IP地址字符是否是数字类型
    Declare @ValidFlag_4 bit  ----存放IP地址字符是否是数字类型

    Declare @tempFlag_1 bit     ----存放IP地址字符是否是合格数据
    Declare @tempFlag_2 bit     ----存放IP地址字符是否是合格数据
    Declare @tempFlag_3 bit     ----存放IP地址字符是否是合格数据
    Declare @tempFlag_4 bit   ----存放IP地址字符是否是合格数据

    Declare @strIP_1 nvarchar(4)   ----存放IP地址第一部分
    Declare @strIP_2 nvarchar(4)   ----存放IP地址第二部分
    Declare @strIP_3 nvarchar(4)   ----存放IP地址第三部分
    Declare @strIP_4 nvarchar(4)   ----存放IP地址第四部分

    Declare @tempPoint_1 int   ----存放IP地址中小数点位置
    Declare @tempPoint_2 int   ----存放IP地址中小数点位置
    Declare @tempPoint_3 int   ----存放IP地址中小数点位置
    Declare @tempPoint_4 int   ----存放IP地址中小数点位置

    set @strIP=RTRIM(LTRIM(@strIPAddress))
    set @tempIPLen=Len(@strIP)

    set @tempIP= @strIP
    select @tempPoint_1= CHARINDEX('.',@tempIP)
    set @strIP_1=substring(@strIP,0,@tempPoint_1) --获取第一个IP地址字符段

    SELECT @tempFlag_1=ISNUMERIC(@strIP_1)
    IF(@tempFlag_1=1)
    begin 
    IF((@tempPoint_1>1) AND ( @tempPoint_1<5) AND convert(INT,@strIP_1,4)>=0 AND convert(INT,@strIP_1,4) <=255)
    SET @ValidFlag_1=1
    ELSE
    SET @ValidFlag_1=0
    end

    IF(@ValidFlag_1 =1)
    BEGIN
     set @tempIP=substring( @strIP,@tempPoint_1+1,@tempIPLen-@tempPoint_1)
     select @tempPoint_2= CHARINDEX('.',@tempIP)
     set @strIP_2=substring(@tempIP,0,@tempPoint_2) --获取第二个IP地址字符段
     

     SELECT @tempFlag_2=ISNUMERIC(@strIP_2)
     IF(@tempFlag_2=1)
     begin 
     IF((@tempPoint_2>1) AND ( @tempPoint_2<5) AND convert(INT,@strIP_2,4)>=0 AND convert(INT,@strIP_2,4) <=255)
     SET @ValidFlag_2=1
     ELSE
     SET @ValidFlag_2=0
     end
     
     IF(@ValidFlag_2=1)
     BEGIN
      set @tempIP=substring( @strIP,@tempPoint_1+@tempPoint_2+1,@tempIPLen-@tempPoint_1-@tempPoint_2)
      select @tempPoint_3= CHARINDEX('.',@tempIP)
      set @strIP_3=substring(@tempIP,0,@tempPoint_3) --获取第三个IP地址字符段
      
      SELECT @tempFlag_3=ISNUMERIC(@strIP_3)
      IF(@tempFlag_3=1)
      begin
      IF((@tempPoint_3>1) AND ( @tempPoint_3<5) AND convert(INT,@strIP_3,4)>=0 AND convert(INT,@strIP_3,4) <=255)
      SET @ValidFlag_3 =1
      ELSE
      SET @ValidFlag_3 =0
      end 
     
      IF(@ValidFlag_3 =1)
      BEGIN
      set @strIP_4=substring(@strIP,@tempPoint_1+@tempPoint_2+@tempPoint_3+1,@tempIPLen-@tempPoint_1-@tempPoint_2-@tempPoint_3)
      
      SELECT @tempFlag_4=ISNUMERIC(@strIP_4)
      IF(@tempFlag_4=1)
      begin
      IF(convert(INT,@strIP_4,4)>=0 AND convert(INT,@strIP_4,4) <=255)
      SET @rstFlag =1
      ELSE
      SET @rstFlag =0
      end
      END
      --获取第四个IP地址字符段
     END
    END


    select  @tempPoint_1, @tempPoint_2, @tempPoint_3, @tempPoint_4
    select @strIP_1,@strIP_2,@strIP_3,@strIP_4,@rstFlag
    GO

    sql函数 判断IP是否合法

    CREATE FUNCTION IsValidIP(@strIPAddress nvarchar(32))
    RETURNS  int
    AS 
    BEGIN
    Declare @rstFlag int
    Declare @strIP nvarchar(16)     ----存放IP地址去空格字符串
    Declare @tempIP nvarchar(16)     ----存放临时IP地址字符串
    Declare @tempIPLen int    ----存放IP地址字符串长度

    Declare @ValidFlag_1 bit  ----存放IP地址字符是否是数字类型
    Declare @ValidFlag_2 bit  ----存放IP地址字符是否是数字类型
    Declare @ValidFlag_3 bit  ----存放IP地址字符是否是数字类型
    Declare @ValidFlag_4 bit  ----存放IP地址字符是否是数字类型

    Declare @tempFlag_1 bit     ----存放IP地址字符是否是合格数据
    Declare @tempFlag_2 bit     ----存放IP地址字符是否是合格数据
    Declare @tempFlag_3 bit     ----存放IP地址字符是否是合格数据
    Declare @tempFlag_4 bit   ----存放IP地址字符是否是合格数据

    Declare @strIP_1 nvarchar(4)   ----存放IP地址第一部分
    Declare @strIP_2 nvarchar(4)   ----存放IP地址第二部分
    Declare @strIP_3 nvarchar(4)   ----存放IP地址第三部分
    Declare @strIP_4 nvarchar(4)   ----存放IP地址第四部分

    Declare @tempPoint_1 int   ----存放IP地址中小数点位置
    Declare @tempPoint_2 int   ----存放IP地址中小数点位置
    Declare @tempPoint_3 int   ----存放IP地址中小数点位置
    Declare @tempPoint_4 int   ----存放IP地址中小数点位置


    set @rstFlag=0
    set @strIP=RTRIM(LTRIM(@strIPAddress))
    set @tempIPLen=Len(@strIP)

    set @tempIP= @strIP
    select @tempPoint_1= CHARINDEX('.',@tempIP)
    set @strIP_1=substring(@strIP,0,@tempPoint_1) --获取第一个IP地址字符段

    SELECT @tempFlag_1=ISNUMERIC(@strIP_1)
    IF(@tempFlag_1=1)
    begin 
    IF((@tempPoint_1>1) AND ( @tempPoint_1<5) AND convert(INT,@strIP_1,4)>=0 AND convert(INT,@strIP_1,4) <=255)
    SET @ValidFlag_1=1
    ELSE
    SET @ValidFlag_1=0
    end

    IF(@ValidFlag_1 =1)
    BEGIN
     set @tempIP=substring( @strIP,@tempPoint_1+1,@tempIPLen-@tempPoint_1)
     select @tempPoint_2= CHARINDEX('.',@tempIP)
     set @strIP_2=substring(@tempIP,0,@tempPoint_2) --获取第二个IP地址字符段
     

     SELECT @tempFlag_2=ISNUMERIC(@strIP_2)
     IF(@tempFlag_2=1)
     begin 
     IF((@tempPoint_2>1) AND ( @tempPoint_2<5) AND convert(INT,@strIP_2,4)>=0 AND convert(INT,@strIP_2,4) <=255)
     SET @ValidFlag_2=1
     ELSE
     SET @ValidFlag_2=0
     end
     
     IF(@ValidFlag_2=1)
     BEGIN
      set @tempIP=substring( @strIP,@tempPoint_1+@tempPoint_2+1,@tempIPLen-@tempPoint_1-@tempPoint_2)
      select @tempPoint_3= CHARINDEX('.',@tempIP)
      set @strIP_3=substring(@tempIP,0,@tempPoint_3) --获取第三个IP地址字符段
      
      SELECT @tempFlag_3=ISNUMERIC(@strIP_3)
      IF(@tempFlag_3=1)
      begin
      IF((@tempPoint_3>1) AND ( @tempPoint_3<5) AND convert(INT,@strIP_3,4)>=0 AND convert(INT,@strIP_3,4) <=255)
      SET @ValidFlag_3 =1
      ELSE
      SET @ValidFlag_3 =0
      end 
     
      IF(@ValidFlag_3 =1)
      BEGIN
      set @strIP_4=substring(@strIP,@tempPoint_1+@tempPoint_2+@tempPoint_3+1,@tempIPLen-@tempPoint_1-@tempPoint_2-@tempPoint_3)
      
      SELECT @tempFlag_4=ISNUMERIC(@strIP_4)
      IF(@tempFlag_4=1)
      begin
      IF(convert(INT,@strIP_4,4)>=0 AND convert(INT,@strIP_4,4) <=255)
      set @rstFlag=1
      ELSE
      set @rstFlag=0  
      end
      END
      --获取第四个IP地址字符段
     END
    END
    RETURN (@rstFlag)
    END

  • 相关阅读:
    Android:ScaleType与Matrix相关
    Android:不同drawable文件夹的区别
    Android关于inflate的root参数
    Android:手把手教你打造可缩放移动的ImageView(下)
    Android:手把手教你打造可缩放移动的ImageView(上)
    在android studio中集成javah, ndk-build进行JNI开发
    彻底理解Toast原理和解决小米MIUI系统上没法弹Toast的问题
    Java基础知识
    从.NET的宠物商店到Android MVC MVP
    从零开始搭建架构实施Android项目
  • 原文地址:https://www.cnblogs.com/xqf222/p/3306884.html
Copyright © 2011-2022 走看看