sql中将字符串转换成数字时的难题,字符串可能是整数,也可能是小数!

时间:2021-10-24 19:35:28
如字符串str_jg中有可能是小数0.39,也可能是整数如50。
我是用下面的语句
cast(str_jg as float)
但是报错(sql 2005)

6 个解决方案

#1


declare @c1 varchar(10),@c2 varchar(10),@c3 varchar(10)

select @c1='3',@c2='3.14',@c3='3.14E-5'
select cast(@c1 as float),cast(@c2 as float),cast(@c3 as float)
/*
                                              
---------------------- ---------------------- ----------------------
3                      3.14                   3.14E-05

(1 行受影响)
*/



哪儿错了?

#2


declare @a varchar(10) 
select @a='0.39' 

select cast(@a as float)

0.3900000000000000


declare @b varchar(10) 
select @b='50' 

select cast(@b as float)

50.0

#3


select cast('0.39' as float)
union
select cast('50' as float)

运行没错的啊,哪里错了,提示什么错误呢 ??

#4


估计有字母、空格什么的

#5


引用楼主 luzhiac 的帖子:
如字符串str_jg中有可能是小数0.39,也可能是整数如50。 
我是用下面的语句 
cast(str_jg as float) 
但是报错(sql 2005)


看看是哪一行报的错:
select * from tb where isnumeric(str_jg)=0

#6


多谢各位!
问题解决了,是因为我的数字是金额,象“1,240.00”这样的中间含有逗号的金额就不能转换,必须先通过replace将逗号转换后才能执行,马上给分咯。

#1


declare @c1 varchar(10),@c2 varchar(10),@c3 varchar(10)

select @c1='3',@c2='3.14',@c3='3.14E-5'
select cast(@c1 as float),cast(@c2 as float),cast(@c3 as float)
/*
                                              
---------------------- ---------------------- ----------------------
3                      3.14                   3.14E-05

(1 行受影响)
*/



哪儿错了?

#2


declare @a varchar(10) 
select @a='0.39' 

select cast(@a as float)

0.3900000000000000


declare @b varchar(10) 
select @b='50' 

select cast(@b as float)

50.0

#3


select cast('0.39' as float)
union
select cast('50' as float)

运行没错的啊,哪里错了,提示什么错误呢 ??

#4


估计有字母、空格什么的

#5


引用楼主 luzhiac 的帖子:
如字符串str_jg中有可能是小数0.39,也可能是整数如50。 
我是用下面的语句 
cast(str_jg as float) 
但是报错(sql 2005)


看看是哪一行报的错:
select * from tb where isnumeric(str_jg)=0

#6


多谢各位!
问题解决了,是因为我的数字是金额,象“1,240.00”这样的中间含有逗号的金额就不能转换,必须先通过replace将逗号转换后才能执行,马上给分咯。