【问题标题】:How to sum varchar datatype by converting varchar into float如何通过将 varchar 转换为 float 来对 varchar 数据类型求和
【发布时间】:2015-12-05 05:42:15
【问题描述】:

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

我将以下查询写为:

Select sum(amount) from tbl1;

它给出了一个错误:

将 varchar 数据类型转换为 int 时转换失败

所以也尝试了这个查询:

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

但我得到了错误。

【问题讨论】:

标签: mysql database


【解决方案1】:

试试这样:

SELECT sum(CAST(amount AS UNSIGNED)) FROM tbl1

请注意,UNSIGNEDSIGNED 用于整数。如果您的数据可能包含十进制值,那么您可以尝试像这样使用decimal

SELECT sum(CAST(amount AS DECIMAL(10,2))) FROM tbl1

【讨论】:

    【解决方案2】:

    在我的情况下,我有一个错误转换,因为我在字段中有 - 之类的值

    我发现这个解决方案有不同的值类型 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多