Sql server 将给定范围内的所有IP地址放入SQL Server表中
我的IP地址类似于“255.255.120.110-255.255.120.115255.10.120.110-255.10.120.115255.10.115”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
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,是的,它是固定的。