用自定义函数替换SQL中的全角数字为半角数字
2007-06-01 10:19
239 查看
在我们使用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
没有,我们自己动手:
下面就是我自己写的一个函数,当然,我的数据量小,没有考虑性能!
-- 把全角数据转换成半角数字(注意,这个只能转换全是全角的,在第一个半角数据时返回)
-- 公司:石家庄创联科技
-- 编写:牛昆亮 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
相关文章推荐
- 用自定义函数替换SQL中的全角数字为半角数字
- SQL字符串中取字母及数字的两个自定义函数(收藏)
- C#中为什么两个函数对全角半角数字字符的处理方式不一样
- SQL取得最大排序数字并累加1的自定义函数
- SQL全角半角标点互转函数
- t-sql判断一个字符串是否为bigint的函数(全角数字需要判断为不合格)
- t-sql判断一个字符串是否为bigint的函数(全角数字需要判断为不合格)
- 专注SQL实现、优化 自定义函数实现NULL值替换
- SQL取得最大排序数字并累加1的自定义函数
- ms sql server 中的金额阿拉伯数字转换为中文的自定义函数
- sql 自定义函数返回中文,数字,英文
- sql 实现全角与半角字符转换的处理函数
- 把字符串中的全角数字替换成半角数字 0123456789 转换成 0123456789
- 全角转半角函数、全角数字转半角数字
- t-sql判断一个字符串是否为bigint的函数(全角数字需要判断为不合格)
- SQL自定义函数与存储过程
- Microsoft SQL Server 自定义函数整理大全--转【叶子】的文章
- oracle自定义函数示例--实现时间和数字的来回转换
- replace MYSQL字符替换函数sql语句分享(正则判断)
- DB2导出del文件的sql、别名为数字和字母的处理、结果数据替换