推荐.NET教程: ASP.NET C# 开发环境 Ajax教程 控件开发 统计报表 数据库 Web服务 安装部署 CommunityServer NHibernate DataGrid/GridView 实用代码 VS2005
示例源码 MVC/三层 SqlHelper 入门源码 开源 CMS Ajax/Atlas C#.net 毕业设计 源码 经典代码 商业 本站作品 持久层 随书源码 WebService 英文/汉化 Asp.net2.0

阿牛·乐园

每天进步一点点

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  80 随笔 :: 14 文章 :: 389 评论 :: 13 引用

在我们使用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)-30as 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

posted on 2007-06-01 10:19 阿牛 阅读(154) 评论(0)  编辑 收藏 网摘 所属分类: TSQL

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
Google站内搜索

China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》



相关文章:

相关链接:

历史上的今天:
2006-06-01 取名常用字