在我們使用mssql的時候,有時表中有一些是全角的數(shù)字,但我們的系統(tǒng)不能夠正確的使用它們,這時我們要把他們替換為半角數(shù)字。而sql自己好像沒有這個函數(shù)。
沒有,我們自己動手:
下面就是我自己寫的一個函數(shù),當然,我的數(shù)據量小,沒有考慮性能!
-- 把全角數(shù)據轉換成半角數(shù)字(注意,這個只能轉換全是全角的,在第一個半角數(shù)據時返回)-- 公司:石家莊創(chuàng)聯(lián)科技-- 編寫:牛昆亮 qq:273352165
create function ufn_convertwidenumerictoansi( @vstrin varchar(1000))returns varchar(4000)asbegin 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 @[email protected]+4 end--print @strreturnreturn @strreturnend
示例
select '031851001845' as org, dbo.ufn_convertwidenumerictoansi('031851001845') des
org des ------------------------ ---------------------------031851001845 031851001845