MySQL SUM longtext字段,其$ 1.000.00为1000

时间:2018-07-15 03:53:23

标签: mysql sum

我有一个meta_entry类型的longtext列,其中有两个条目$1.000.00$54.00
当我运行SUM(SUBSTRING(meta_value, 2))时,我得到55,因为它没有将第一个条目读为1000,而是将它读为1,因为后面的. 1
我如何编写一个查询,将忽略句点,同时仍将句点保留在数字末尾(美分之前)?

1 个答案:

答案 0 :(得分:0)

给出:

mysql> select * from stuff;
+------------+
| meta_entry |
+------------+
| $1.000.00  |
| $54.00     |
+------------+
2 rows in set (0.00 sec)

以下查询将产生:

mysql> select sum(replace(substring(meta_entry, 2), '.', '')) / 100 from stuff;
+-------------------------------------------------------+
| sum(replace(substring(meta_entry, 2), '.', '')) / 100 |
+-------------------------------------------------------+
|                                                  1054 |
+-------------------------------------------------------+
1 row in set (0.00 sec)

当然,如果您最后需要这些美分,那么您将需要更多,在这种情况下,这种长而丑陋的大事情将满足您的需求:

mysql> select format(cast(sum(replace(substring(meta_entry, 2), '.', '')) as decimal) / 100, 2) as sum from stuff;
+----------+
| sum      |
+----------+
| 1,054.00 |
+----------+
1 row in set (0.00 sec)