【问题标题】:MySQL: thousands separator with count(*)MySQL:千位分隔符与计数(*)
【发布时间】:2014-04-25 20:41:14
【问题描述】:

我有一个类似的 MySQL 语句

SELECT COUNT(*) FROM xy

我得到一个像 1443223 这样的数字。但我想要千位分隔符,例如1.443.223。我在这里找到的(使用 FORMAT)只产生了一个错误。我试过了,例如

SELECT FORMAT(COUNT( * ), 2, 'de_DE')

嗯...也许有人知道答案吗?谢谢!

编辑: 我得到的错误是

错误号:1582

对本机函数“FORMAT”的调用中的参数计数不正确

SELECT FORMAT(COUNT( * ), 2, 'de_DE') AS anzahl FROM xy a WHERE a.typ = 'IHK' AND a.datum >=2014

【问题讨论】:

  • 请在此处提及您遇到的错误?
  • 我将错误添加到我的帖子中。 @RonakShah 我知道这个答案,但我无法将其转移到我的问题上。

标签: mysql number-formatting


【解决方案1】:

我尝试了这两个查询,它们运行良好:

SELECT FORMAT((SELECT COUNT(*) FROM xy), 2, 'de_DE');
SELECT FORMAT((SELECT count(*) FROM xy a WHERE a.typ = 'IHK' AND a.datum >=2014), 2, 'de_DE') AS anzahl;

第二个查询来自您遇到的错误,尝试一次,它应该可以工作。我测试过了。

您使用的 MySQL 版本是什么?也试试这个:

SELECT FORMAT((SELECT COUNT(*) FROM xy), 2);
SELECT FORMAT((SELECT count(*) FROM xy a WHERE a.typ = 'IHK' AND a.datum >=2014), 2) AS anzahl;

【讨论】:

  • 在前 2 个 SQL 中,方法 FORMAT 有 3 个参数,而在第二个示例中有 2 个参数,这就是您得到的错误
  • 我有 MySQL 5.1.73。您的前 2 个建议会产生错误,后两个会产生错误,但会产生类似 158,470.00 的输出。
  • 如果我使用你的第二个并写 ..., 0 (而不是 ,2)我得到没有小数的数字(这就是我想要的)。您知道如何去掉逗号并改用积分吗?
  • 是的,您始终可以使用以下方法删除它:select substring_index((SELECT FORMAT((SELECT COUNT(*) FROM xy), 2)), '.', 1) AS anzahl;试试看它是否适合你。
  • 也许我的问题错了,试试这个:SELECT REPLACE((select substring_index((SELECT FORMAT((SELECT COUNT(*) FROM xy), 2)), '.', 1)) , ',', '.') 作为 anzahl;
【解决方案2】:

你可以试试这个:

SELECT FORMAT((SELECT COUNT( * ) FROM XY), 2, 'de_DE')

【讨论】:

  • 你使用的查询和我上面写的一样吗?
【解决方案3】:

我只是这样尝试:

SELECT FORMAT(COUNT(*), 2, 'de_DE') FROM your_table

它有效。 也许您错过了 FROM... 子句?

【讨论】:

  • 不,我没有忘记 FROM 子句。我得到同样的错误。
猜你喜欢
  • 2011-08-17
  • 1970-01-01
  • 2012-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-07
相关资源
最近更新 更多