数据库的求和,如果我的一列是用VARCHAR类型,保存的数据比如是339,369这样的金额数据,怎么才能相加?

如题所述

从你的VARCHAR类型来看,不是ORACLE的数据库
ORACLE数据库是使用TO_NUMBER()来实现字符到数字的转换的。不过ORACLE里面这个类型叫VARCHAR2或者CHAR
你的应该是SQLSERVER一类的数据库吧?
select sum(CAST(列名 AS INT)) from 表
如果金额有小数位,那就把INT改成DECIMAL(10,2)这样追问

是SQLserver05的,金额是339,369,中间有逗号,也就是339369,也能用吗?麻烦你了

追答

不能用,要先把逗号去掉,用REPLACE函数试试
select sum(CAST(REPLACE(列名,',','') AS INT)) from 表
先把逗号去掉,然后转化成数字,在做加

追问

还是不行哦,换成空格了吧?能不能去掉空格?

追答

换成的是空,不是空格。
是不是左右两边有空格?
用这个:select sum(CAST(RTRIM(LTRIM(REPLACE(列名,',',''))) AS INT)) from 表

追问

还是不行,转换错误,比如我是这个282,977.97,我用as float,
select sum(CAST(RTRIM(LTRIM(REPLACE(合同额A1月,',',''))) AS float)) from TABLE_第二分公司9月份

追答

稍等,我试试
您好,程序是没有问题的,我测试了一下,通过了。
您那提示的是什么错误?是不是那个逗号的格式不一样呢?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-21
select sum(to_number(字段名)) from 表