mysql sum longtext字段,以$1.000.00作为1000

6ss1mwsb  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(273)

我有一个专栏 meta_entry 类型 longtext 里面有两个条目 $1.000.00 以及 $54.00 当我跑的时候 SUM(SUBSTRING(meta_value, 2)) 我明白了 55 因为它不把第一条读作 1000 更确切地说,它读作 1 因为 . 之后 1 如何编写忽略句点的查询,同时仍将句点保留在数字的末尾(在美分之前)?

cld4siwp

cld4siwp1#

鉴于:

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)

相关问题