如何通过将varchar转换为float来汇总varchar数据类型

时间:2015-09-09 09:54:51

标签: mysql database

我有一个列'金额'这是在' varchar'我表格中的数据类型' tbl1'。现在我必须计算该列的总量(我知道我可以修改我的表的列,但我必须遵循一些程序将其保持为' varchar'。但结果必须返回在float数据类型中。

我写了以下查询:

Select sum(amount) from tbl1;

它出错了:

  

将varchar数据类型转换为int

时转换失败

所以尝试了这一个问题:

select sum(convert(float, amount)) from tbl1;

但我收到了错误。

2 个答案:

答案 0 :(得分:4)

试试这样:

UNSIGNED

请注意,SIGNEDdecimal用于整数。如果您的数据可能包含小数值,那么您可以尝试使用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;