如何从数据库

时间:2017-11-23 12:14:38

标签: php mysql

我想获取特定日期的总帐单金额,但在我的数据库中,所有金额都插入了“£”符号。现在我想总结所有列值。任何人都可以帮我找出

例如: 我创建了一个名为order的表,列为idtotamt。在totamt列中插入数据,例如浮点值。 £2.00£90.00等......

我试图在sql查询中使用Sum函数添加值。它会增加值但总量是错误的。

1 个答案:

答案 0 :(得分:0)

我想,正如评论中的其他人所猜测的那样,您的totamt列的数据类型为VARCHAR(),而不是您在问题中提到的FLOAT数据类型。

要以最佳方式解决此问题,您应该重新编写数据库,以便totamt列具有DECIMAL(12,2)数据类型。为什么?正如您所发现的,字符串很难用于算术运算。此外,浮点运算有一些怪癖使其对货币价值不太好。

与此同时,您需要在查询中添加代码以编辑totamt字符串,以便在将其提供给SUM()操作之前看起来像数字。

这可能会让您转换价值。它会删除货币符号并将该金额表示为十进制值。

     CONVERT(REPLACE(totamt,'£', ''), DECIMAL(12,2)) totamt

所以你可以这样做

     SELECT SUM(CONVERT(REPLACE(totamt,'£', ''), DECIMAL(12,2))) grand_total,
            id
       FROM table
      GROUP BY id