【问题标题】:MySQL Decimal formatMySQL 十进制格式
【发布时间】:2020-06-25 01:04:20
【问题描述】:

我的表中有 2 个 TEXT 列(AmountPaid 和 AmountRemaining)。格式为 10.000,00 欧元

我正在尝试创建一个加上这两个值的查询,并将其转换回如上所示的格式(10.000,00 欧元)。当然,这也应该适用于例如 € 100.000.000,00、€ 690,00 或 € 10,00 等...

现在我有这个查询巫婆加值:

SELECT AmountRemaining, CAST(REPLACE(REPLACE(REPLACE(CAST(AmountRemaining AS CHAR), '€ ', '') , '.', ''), ',00', '') AS DECIMAL) + 
CAST(REPLACE(REPLACE(REPLACE(CAST(AmountPaid AS CHAR), '€ ', '') , '.', ''), ',00', '') AS DECIMAL) FROM Clients

这个的输出是这样的“10000”,“13000”等等......

如何将其转换回原始格式?

谢谢。

【问题讨论】:

  • 将数值存储为表格中的数字,并在显示它们时进行格式化(添加,将小数点更改为逗号,反之亦然)(使用FORMAT 和适当的语言环境) .那么你就不会有这些问题了。
  • @Nick 我知道这是一种方法。说起来容易做起来难,请举个例子
  • 我同意@Nick。这是由于糟糕的数据库设计造成的人为问题。

标签: mysql format decimal


【解决方案1】:

我的表中有 2 个 TEXT 列。

错了。文本列包含文本。对数字使用数字列。也就是说,在输入时清理数据,而不是在输出时。

一旦你这样做了,剩下的就更好了:

使用LOCALE 建立所需的小数点和千位分隔符。在 FORMAT() 函数中使用它来完成其余的数字部分。 T 附加货币符号,使用CONCAT()

SELECT
    CONCAT('€', FORMAT(1234567, 2, 'de_DE'));

+--------------------------------------------+
| CONCAT('€', FORMAT(1234567, 2, 'de_DE'))   |
+--------------------------------------------+
| €1.234.567,00                              |
+--------------------------------------------+

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    相关资源
    最近更新 更多