SqlServer 2005 将字符串强制转换成float类型 20090317

本文介绍了一个SQL函数,用于从输入的字符串中提取数值部分。该函数通过检查每个字符的Unicode值来判断是否为数字或小数点,并进行相应处理。
今天写了一个数据库的函数
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

create function [dbo].[cc2sf_convert]( @my_str varchar(100))
returns varchar(100)
begin
declare @length int
declare @uni_int int
declare @i int
set @i = 0
set @length = len(@my_str)

while (@i <@length)
BEGIN
set @uni_int = unicode(substring(@my_str,@i+1,1));
IF @uni_int = unicode('.') or(48<= @uni_int and @uni_int<=57)
set @i = @i +1;
ELSE
break;
END
return substring(@my_str,1,@i)
end

调用范例:
dbo.cc2sf_convert('20.1万元');

------
result: 20.1


所有的函数快都是由
begin
end
构成他们替代了 { }
例如上面的函数同样可以写为:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER function [dbo].[myconvert] ( @my_str varchar(100)) returns varchar(100)
begin
declare @length int
declare @uni_int int
declare @i int
set @i = 0
set @length = len(@my_str)

while (@i <@length)
BEGIN
set @uni_int = unicode(substring(@my_str,@i,@i+1));
IF @uni_int = unicode('.') or(48<= @uni_int and @uni_int<=57)
begin
set @i = @i +1;
end
ELSE
begin
break;
end
END

return substring(@my_str,1,@i)
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值