用自定义函数替换SQL中的全角数字为半角数字

王朝mssql·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

在我们使用MSSQL的时候,有时表中有一些是全角的数字,但我们的系统不能够正确的使用它们,这时我们要把他们替换为半角数字。而SQL自己好像没有这个函数。

没有,我们自己动手:

下面就是我自己写的一个函数,当然,我的数据量小,没有考虑性能!

-- 把全角数据转换成半角数字(注意,这个只能转换全是全角的,在第一个半角数据时返回)

-- 公司:石家庄创联科技

-- 编写:牛昆亮 QQ:273352165

create function ufn_convertWideNumericToAnsi

(

@vstrIn varchar(1000)

)

returns varchar(4000)

as

begin

declare @strReturn varchar(4000)

,@bin varbinary(4000)

,@str varchar(4000)

,@stmp varchar(4)

,@i int

,@len int

-- ,@vstrIn varchar(1000)

--set @vstrIn ='031851001845'

set @strReturn=''

set @bin=convert(varbinary(4000),@vstrIn)

exec master..xp_varbintohexstr @bin, @str out

select @str=stuff(@str,1,2,'')

set @len=len(@str)

set @i=1

while @i<@len

begin

set @stmp = substring(@str,@i,4)

if(substring(@stmp,1,1) <> 'A')

return @vstrIn

set @stmp = replace(@stmp,'A','')

set @stmp = replace(@stmp,'B','')

--print @stmp

set @stmp = cast((convert(int,@stmp)-30) as varchar(1))

set @strReturn = @strReturn + @stmp

set @i=@i+4

end

--print @strReturn

return @strReturn

end

示例

select '031851001845' as ORG, dbo.ufn_convertWideNumericToAnsi('031851001845') DES

ORG DES

------------------------ ---------------------------

031851001845 031851001845

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航