我有一个列'金额'这是在' varchar
'我表格中的数据类型' tbl1'。现在我必须计算该列的总量(我知道我可以修改我的表的列,但我必须遵循一些程序将其保持为' varchar
'。但结果必须返回在float
数据类型中。
我写了以下查询:
Select sum(amount) from tbl1;
它出错了:
将varchar数据类型转换为int
时转换失败
所以尝试了这一个问题:
select sum(convert(float, amount)) from tbl1;
但我收到了错误。
答案 0 :(得分:4)
试试这样:
UNSIGNED
请注意,SIGNED
和decimal
用于整数。如果您的数据可能包含小数值,那么您可以尝试使用SELECT sum(CAST(amount AS DECIMAL(10,2))) FROM tbl1
,如下所示:
{{1}}
答案 1 :(得分:0)
在我的情况下,我有一个强制转换错误,因为我在字段中输入了-这样的值
我发现此解决方案具有不同的值类型 How to Sum a varchar(20) Column
CREATE TABLE Foo (
keycol INT NOT NULL PRIMARY KEY,
datacol VARCHAR(20));
INSERT INTO Foo VALUES(1, 'a');
INSERT INTO Foo VALUES(2, '10');
INSERT INTO Foo VALUES(3, '5');
INSERT INTO Foo VALUES(4, NULL);
SELECT SUM(
CASE WHEN datacol NOT LIKE '%[^0-9]%'
THEN CAST(datacol AS BIGINT)
ELSE 0
END) AS total
FROM Foo;