【问题标题】:SUM of amounts with Dollar sign带有美元符号的金额总和
【发布时间】:2014-02-06 20:01:00
【问题描述】:

我需要找出列中值的总和,例如'$2',类型是varchar。如何即时转换它找到 SUM?

【问题讨论】:

  • 发布表架构、示例数据以及您尝试过的任何内容。
  • 在编程级别而不是mysql做求和...
  • 未来,规范化你的数据!
  • 检查我的答案..它的工作...
  • 我的回答有什么更新吗?

标签: mysql sql


【解决方案1】:

使用 MySQL 的隐式转换可能会更好:

select sum(trim(replace(col, '$', '')) + 0.0)

无声转换将包括美分。另外,非数字字符在数字之后也不会引起错误。 trim() 将删除前导空格,这也会影响转换。

【讨论】:

  • 我认为无论如何都会包括美分
  • 我在这里得到了 SUM。谢谢@戈登。但是我怎样才能得到十进制呢?
  • @HappyCoder 。 . .您可以将结果转换为numeric
【解决方案2】:

这将删除第一个字符并总结剩余的字符:

select sum(substring(field,2)) from table

【讨论】:

  • 但是即使 DB 有价值,我也得到了全零
  • 因为类型是varchar,在计算SUM之前需要先转换吗?
  • 这肯定行不通...数据类型是 varchar 并且 SUM 不适用于 varchar...谁支持这个???
  • 当前(已编辑)答案看起来不错。 @HappyCoder 你确定切断列中每个值的第一个字符就足够了吗?
  • 是的,但是,我仍然得到零作为 SUM
【解决方案3】:

这是有效的查询

SELECT SUM(CAST(substring(fieldName,2) AS UNSIGNED)) FROM tableName;

Demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多