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

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

没有,我们自己动手:

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

--  把全角数据转换成半角数字(注意,这个只能转换全是全角的,在第一个半角数据时返回)
--  公司:石家庄创联科技
--  编写:牛昆亮  QQ:273352165

None.gif create   function   ufn_convertWideNumericToAnsi
None.gif(
None.gif 
@vstrIn   varchar ( 1000 )
None.gif)
None.gif
returns   varchar ( 4000 )
None.gif
as
None.gif
begin
None.gif 
declare   @strReturn   varchar ( 4000 )
None.gif  ,
@bin    varbinary ( 4000 )
None.gif  ,
@str    varchar ( 4000 )
None.gif  ,
@stmp   varchar ( 4 )
None.gif  ,
@i     int
None.gif  ,
@len    int
None.gif
--   ,@vstrIn varchar(1000)
None.gif

None.gif
-- set @vstrIn ='031851001845'
None.gif
  set   @strReturn = ''
None.gif 
set   @bin = convert ( varbinary ( 4000 ), @vstrIn )
None.gif 
exec  master..xp_varbintohexstr  @bin @str  out
None.gif 
None.gif 
select   @str = stuff ( @str , 1 , 2 , ''
None.gif 
set   @len = len ( @str )
None.gif 
set   @i = 1
None.gif 
while   @i < @len
None.gif 
begin
None.gif 
set   @stmp   =   substring ( @str , @i , 4 )
None.gif 
if ( substring ( @stmp , 1 , 1 <>   ' A ' )
None.gif  
return   @vstrIn
None.gif 
set   @stmp   =   replace ( @stmp , ' A ' , '' )
None.gif 
set   @stmp   =   replace ( @stmp , ' B ' , '' )
None.gif
-- print @stmp
None.gif
  set   @stmp   =   cast (( convert ( int , @stmp ) - 30 as   varchar ( 1 ))
None.gif 
set   @strReturn   =   @strReturn   +   @stmp
None.gif  
set   @i = @i + 4
None.gif 
end
None.gif
-- print @strReturn
None.gif
return    @strReturn
None.gif
end
None.gif
None.gif--示例
None.gif
None.gif
select   ' 031851001845 '   as  ORG,  dbo.ufn_convertWideNumericToAnsi( ' 031851001845 ' ) DES
None.gif
None.gifORG                      DES           
None.gif
-- ---------------------- ---------------------------
None.gif
031851001845               031851001845
None.gif
None.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值