日期:2014-05-18 浏览次数:20581 次
create function f_int2bin_1(@i int)
returns int
as
begin
declare @s varchar(1000)
set @s=''
while @i>0
select @s=cast(@i%2 as varchar)+@s,@i=@i/2
declare @s1 as char(1)
declare @s2 as char(1)
declare @j as int
declare @k as int
set @j = 0
set @k = 0
set @s1 = ''
set @i = 1
while @i <= len(@s)
begin
set @s2 = substring(@s , @i , 1)
if @s2 <> @s1
begin
set @s1 = @s2
if @j > @k and @s2 = '0'
set @k = @j
set @j = 1
end
else
begin
if @i = len(@s) and @s2 = '1'
begin
if @j + 1 > @k
set @k = @j + 1
end
else
set @j = @j + 1
end
set @i = @i + 1
end
return @k
end
go
--调用
select dbo.f_int2bin_1(3516)
/*
110110111100
4
*/
select dbo.f_int2bin_1(35160)
/*
1000100101011000
2
*/
select dbo.f_int2bin_1(351600)
/*
1010101110101110000
3
*/
drop function dbo.f_int2bin_1
------解决方案--------------------