请问,把一个varchar(500)字符变成 decimal(20,6)可以查询。求和 就保错 。将数据类型 nvarchar 转换为 numeric 时出错。

booksfount 2006-10-27 05:50:49
请问,把一个varchar(500)字符变成 decimal(20,6)可以查询。求和 就保错 。
报错内容: 将数据类型 nvarchar 转换为 numeric 时出错。

部分代码如下:

SELECT isnull( CONVERT(decimal(20,6),REPLACE(B.CellValue,',','') ) ,0)
--sum(isnull( CONVERT(decimal(20,6),REPLACE(B.CellValue,',','') ) ,0))
FROM Rep_cc B

当不加sum的时候,好的,出来大约30条纪录,已经转换成数字了。显示正常。可是一sum就保错

将数据类型 nvarchar 转换为 numeric 时出错。
我后来改用cast函数也不行。换float也不行。

请问,怎么解决。谢谢帮助!
...全文
255 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
booksfount 2006-10-28
通过在函数中定义表变量, 中转了一下子,解决了。谢谢大家帮助
回复
booksfount 2006-10-28
to : marco08(路是这样走过来的,走过来的路是这样)

sum() 的值发生溢出
-----
请问这个怎么解决阿。 里面的数据并不大也不多啊,怎么就溢出了。有什么办法解决么?
谢谢帮助
回复
marco08 2006-10-27
sum() 的值发生溢出
回复
booksfount 2006-10-27
谢谢帮助!
我先回家了,明天上午来看看
回复
booksfount 2006-10-27
593.653000
297.793000
300.727000
149.997000
292.860000
300.660000
.000000
300.527000
298.993000
300.727000
597.719000
151.063000
305.527000
449.256000
601.054000
297.727000
297.527000
300.860000
447.857000
295.860000
299.527000
296.526000
90596.846000
595.654000
447.590000
147.930000
300.460000
298.727000
450.990000
603.053000
301.260000
609.186000
445.724000
446.256000
303.993000
150.797000
289.260000
298.860000


以上是结果,没有什么特殊字符阿
难道是那个 .000000
回复
xyxfly 2006-10-27
create table test(a varchar(500))

insert test
select '100' union
select '100.123'

select sum(cast(a as decimal(20,6))) from test

drop table test


----------------------------------------
200.123000


看看是不是有什么特殊字符
回复
booksfount 2006-10-27
而且,偶尔有一次好了。后来就一直不好了
回复
booksfount 2006-10-27
是 sql server2000
回复
apple2323 2006-10-27
你的是用的SQL server2005吗?
回复
booksfount 2006-10-27
记录中 都是百位的数字,只有一条记录 是 万位 ???这个也会溢出么?
回复
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2006-10-27 05:50
社区公告
暂无公告