我有一个meta_entry
类型的longtext
列,其中有两个条目$1.000.00
和$54.00
当我运行SUM(SUBSTRING(meta_value, 2))
时,我得到55
,因为它没有将第一个条目读为1000
,而是将它读为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)