只是简单的写一下,没考虑复杂的a类b类c类的复杂判定create function f_cip(@ip varchar(30),@mask int)
returns varchar(100)
as
begin
declare @i int
set @i = 1
set @mask = 256 - @mask
while power(2,@I) < @mask
set @i = @I + 1
set @mask = power(2,@i)
return @ip +'------'+ left(@ip,len(@ip) - charindex('.',reverse(@ip)) +1) + ltrim(@mask)
end
go
declare @ip varchar(30)
declare @m int
set @m = 24
set @ip = '192.168.0.0'
select dbo.f_cip(@ip,@m)drop function f_cip/*
----------------------------------------------------------------------------------------------------
192.168.0.0------192.168.0.256(所影响的行数为 1 行)*/
returns varchar(100)
as
begin
declare @i int
set @i = 1
set @mask = 256 - @mask
while power(2,@I) < @mask
set @i = @I + 1
set @mask = power(2,@i)
return @ip +'------'+ left(@ip,len(@ip) - charindex('.',reverse(@ip)) +1) + ltrim(@mask)
end
go
declare @ip varchar(30)
declare @m int
set @m = 24
set @ip = '192.168.0.0'
select dbo.f_cip(@ip,@m)drop function f_cip/*
----------------------------------------------------------------------------------------------------
192.168.0.0------192.168.0.256(所影响的行数为 1 行)*/
解决方案 »
- 正在做一个和“管家婆”类似的软件,问个业务问题,请问“单位应收应付”是应该怎么计算呢?应该用哪些单据字段加减呢
- 表的连接查询,征询一个快速的做法,谢谢。
- 事务日志提前写入
- 查询问题,有请 zjcxc,libin_ftsafe,paluo.......
- 新版本的 SQL SERVER 性能这么低吗?
- 关于一个数据库表设计的问题
- 这两提,我都快疯了
- 关于姓氏修改的问题,请高手指教(在线等待。。。)
- SQL数据库网站不能更新,只可修改
- 遇存储过程一疑难,请各位高手指点,急!!谢谢!!!
- 紧急求助!!! 表错误: 数据库 ID 13,对象 ID 2,索引 ID 0。链的链接不匹配 如何处理?先谢过!
- 关于select distinct的问题
记得考ccna时,这问题我都是写成010101去算..
returns varchar(300)
as
begin
declare @i int,@ret varchar(300)
set @i = 1
set @mask = 256 - @mask
while power(2,@I) < @mask
set @i = @I + 1
set @mask = power(2,@i)
set @i = 256/@mask
if @i = 1
-- if @mask = 256
set @ret = @ip +'------'+ left(@ip,len(@ip) - charindex('.',reverse(@ip)) +1) + ltrim(@mask)
else
while @i > 0
begin
set @ret =isnull(@ret+char(13),'')+'192.168.0.'+right('000'+ltrim((@i-1)*@mask),3) + '-----'+'192.168.0.'+ltrim(@i*@mask - 1)
set @I = @I- 1
end
return @ret
end
go
declare @ip varchar(30)
declare @m int
set @m = 200
set @ip = '192.168.0.0'
select dbo.f_cip(@ip,@m) as '所有子网'drop function f_cip/*
所有子网
-----------------------------------
192.168.0.192-----192.168.0.255
192.168.0.128-----192.168.0.191
192.168.0.064-----192.168.0.127
192.168.0.000-----192.168.0.63(所影响的行数为 1 行)*/
returns varchar(300)
as
begin
declare @i int,@ret varchar(300)
set @i = 1
set @mask = 256 - @mask
while power(2,@I) < @mask
set @i = @I + 1
set @mask = power(2,@i)
set @i = 256/@mask
while @i > 0
begin
set @ret =isnull(@ret+char(13),'')+'192.168.0.'+right('000'+ltrim((@i-1)*@mask),3) + '-----'+'192.168.0.'+ltrim(@i*@mask - 1)
set @I = @I- 1
end
return @ret
end
go
declare @ip varchar(30)
declare @m int
set @m = 200
set @ip = '192.168.0.0'
select dbo.f_cip(@ip,@m) as '所有子网'drop function f_cip/*
所有子网
-----------------------------------
192.168.0.192-----192.168.0.255
192.168.0.128-----192.168.0.191
192.168.0.064-----192.168.0.127
192.168.0.000-----192.168.0.63(所影响的行数为 1 行)*/