加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

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

发布时间:2018-08-23 18:44:47 所属栏目:站长百科 来源:站长网
导读:在我们使用MSSQL的时候,有时表中有一些是全角的数字,但我们的系统不能够正确的使用它们,这时我们要把他们替换为半角数字。而SQL自己好像没有这个函数。 没有,我们自己动手: 下面就是我自己写的一个函数,当然,我的数据量小,没有考虑性能! -- 把全

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

没有,我们自己动手:

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

--  把全角数据转换成半角数字(注意,这个只能转换全是全角的,在第一个半角数据时返回)--  公司:石家庄创联科技--  编写:牛昆亮  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 @i=@i+4 end--print @strReturnreturn  @strReturnend

示例

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

ORG                      DES           ------------------------ ---------------------------031851001845             031851001845

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读