请问:用ADO如何获得符合某条件字段的值的和?谢谢!!主要是速度问题,见详情

DNZDFW 2010-07-14 11:55:35
第一个办法是:
先用sql筛选出符合条件的记录,做循环一条条累加。但数据量大使速度特慢;
第二个办法是:
先用sql sum()函数实现。但要sum()的字段是Varchar类型的。请问能转换吗?
还有其他更好的办法吗?
谢谢!

...全文
62 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
百年树人 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dnzdfw 的回复:]
一些字段内容是NULL,提示转换错误。有什么办法吗,谢谢!!
[/Quote]

sum(cast(replace(upper(col),'NULL','0') as dec(18,2)))
水族杰纶 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dnzdfw 的回复:]
一些字段内容是NULL,提示转换错误。有什么办法吗,谢谢!!
[/Quote]
Null 不影响转换
估计是字段有非数值的字符
select *
from isnumeric(col)=0
看看是否有返回值
DNZDFW 2010-07-14
  • 打赏
  • 举报
回复
一些字段内容是NULL,提示转换错误。有什么办法吗,谢谢!!
永生天地 2010-07-14
  • 打赏
  • 举报
回复
sum( cast (字段 as numeric(18,4)))
水族杰纶 2010-07-14
  • 打赏
  • 举报
回复
sum(cast(col as dec(18,2)))
DNZDFW 2010-07-14
  • 打赏
  • 举报
回复
上述语句还是转换错误。谢谢
htl258_Tony 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dnzdfw 的回复:]
如果字段值含字符,上述语句还是提示转换错误
[/Quote]
过滤一下:

select sum(case isnumeric(col) when 0 then 0 else cast(col as float) end) from tb
DNZDFW 2010-07-14
  • 打赏
  • 举报
回复
如果字段值含字符,上述语句还是提示转换错误
DNZDFW 2010-07-14
  • 打赏
  • 举报
回复
错了。速度能快一倍多!
但如何处理字段值含字母的情况呢,或者字段值为NULL?我们认为字段值含字母,该字段值就为0.
DNZDFW 2010-07-14
  • 打赏
  • 举报
回复
这种办法怎么比第一种办法没快多少呢?

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧