create function funcGetLength (@strSource varchar(1000)) returns float as begin declare @iLen int declare @kLen float declare @j int set @iLen=len(@strSource) set @j=0 set @kLen=0 while @j<@iLen begin if Ascii(substring(@strSource,@j+1,1))>=128 begin set @kLen=@kLen+1 end else begin set @kLen=@kLen+0.5 end set @j=@j+1 end return(@kLen) end go
select datalength(@字符串)/2.0
prcgolf(小鸟) 的办法不错,又学了一招
declare @ varchar(800) set @ = '啊asdas' select datalength(@)/2 + case when datalength(@)%2 >0 then 0.5 else 0 end
returns float
as
begin
declare @iLen int
declare @kLen float
declare @j int
set @iLen=len(@strSource)
set @j=0
set @kLen=0
while @j<@iLen
begin
if Ascii(substring(@strSource,@j+1,1))>=128
begin set @kLen=@kLen+1 end
else
begin set @kLen=@kLen+0.5 end
set @j=@j+1
end
return(@kLen)
end
go
set @ = '啊asdas'
select datalength(@)/2 + case when datalength(@)%2 >0 then 0.5 else 0 end