Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将给定范围内的所有IP地址放入SQL Server表中_Sql Server_Sql Server 2008_Sql Server 2012 - Fatal编程技术网

Sql server 将给定范围内的所有IP地址放入SQL Server表中

Sql server 将给定范围内的所有IP地址放入SQL Server表中,sql-server,sql-server-2008,sql-server-2012,Sql Server,Sql Server 2008,Sql Server 2012,我的IP地址类似于“255.255.120.110-255.255.120.115255.10.120.110-255.10.120.115255.10.115” insert into #IPAddresses(ColumnName) select * from [dbo].[splitFunction] (@IPAddresses,',') declare @IPStart int declare Cur_IPAddress cursor

我的IP地址类似于“255.255.120.110-255.255.120.115255.10.120.110-255.10.120.115255.10.115”

insert into #IPAddresses(ColumnName)
        select * from [dbo].[splitFunction] (@IPAddresses,',')

        declare @IPStart int

        declare Cur_IPAddress cursor for 
        select substring(substring(Item, charindex('.', Item, charindex('.', Item, charindex('.', Item ) + 1) + 1)+1, len(Item)),1,
                charindex('-',substring(Item, charindex('.', Item, charindex('.', Item, charindex('.', Item ) + 1) + 1)+1, len(Item)))-1) IPStart ,
                substring(Item,1, charindex('.', Item, charindex('.', Item, charindex('.', Item ) + 1) + 1)) IPExt,
                reverse(substring(reverse(Item),1,charindex('.',reverse(Item))-1)) MaxIp
        from  #IPAddresses where charindex('-',Item)>0
        open Cur_IPAddress  
        fetch next from  Cur_IPAddress into @IPStart, @IPExt, @MaxIp
        while @@fetch_status = 0
        begin
            ;with X 
            as(
                select @IPStart Lev
                union all
                select X.Lev+1
                from X 
                where X.Lev < @MaxIp
            )  insert into #IPAddresses
        select @IPExt +cast(Lev as varchar) Item  from X option(maxrecursion 1000)

        fetch next from  Cur_IPAddress into @IPStart, @IPExt, @MaxIp
        end
        close Cur_IPAddress
        deallocate Cur_IPAddress

        delete from  #IPAddresses where charindex( '-', Item )>0
        --select * from #IPAddresses
    end
我想插入到表中。最后,我需要如下结果:

   IPAddresses
    ---------------
    255.255.120.110
    255.255.120.111
    255.255.120.112
    255.255.120.113
    255.255.120.114
    255.255.120.115
    255.255.120.118
    255.255.120.120.......

IPAddress EX:'255.255.120.110-255.255.120.115255.10.120.110-255.10.120.115255.10.115'

insert into #IPAddresses(ColumnName)
        select * from [dbo].[splitFunction] (@IPAddresses,',')

        declare @IPStart int

        declare Cur_IPAddress cursor for 
        select substring(substring(Item, charindex('.', Item, charindex('.', Item, charindex('.', Item ) + 1) + 1)+1, len(Item)),1,
                charindex('-',substring(Item, charindex('.', Item, charindex('.', Item, charindex('.', Item ) + 1) + 1)+1, len(Item)))-1) IPStart ,
                substring(Item,1, charindex('.', Item, charindex('.', Item, charindex('.', Item ) + 1) + 1)) IPExt,
                reverse(substring(reverse(Item),1,charindex('.',reverse(Item))-1)) MaxIp
        from  #IPAddresses where charindex('-',Item)>0
        open Cur_IPAddress  
        fetch next from  Cur_IPAddress into @IPStart, @IPExt, @MaxIp
        while @@fetch_status = 0
        begin
            ;with X 
            as(
                select @IPStart Lev
                union all
                select X.Lev+1
                from X 
                where X.Lev < @MaxIp
            )  insert into #IPAddresses
        select @IPExt +cast(Lev as varchar) Item  from X option(maxrecursion 1000)

        fetch next from  Cur_IPAddress into @IPStart, @IPExt, @MaxIp
        end
        close Cur_IPAddress
        deallocate Cur_IPAddress

        delete from  #IPAddresses where charindex( '-', Item )>0
        --select * from #IPAddresses
    end

所有这些都是从255.255.120开始的。字符串操作通常最好在调用程序中完成,而不是在SQL Server中,因为SQL Server没有非常强大的字符串操作方法。请不要根据某些时候发生的事情来做示例。添加涵盖所有情况的示例。我投票将此问题作为离题题结束,因为这表明我没有努力。只是让别人写代码。@Deepanshu Kalla,是的,它是固定的。