13

我正在尝试在 SQL 查询中使用格式来适应报告包。我有需要显示为带两位小数的货币的数字,因此我使用格式命令来执行此操作。问题是格式还用逗号分隔千位,报告包 sum 函数无法处理此问题,因此将格式化的数值视为文本而不将其添加。查询使用:-

SELECT customers.name AS "customers name", FORMAT(contracts.charge,2) AS "contracts charge" 
FROM customers
ORDER BY customers.name

(实际查询要复杂得多,但这是相关部分)

为了更全面地解释:-

如果数值为 123.1,则格式化输出为 123.10 有效。如果数值为 1234.1,则格式化输出为 1,234.10

我需要想办法说服查询输出 1234.10

非常感谢

4

4 回答 4

21

你可以:

REPLACE(FORMAT(contracts.charge, 2), ',', '')
于 2011-12-15T11:49:57.400 回答
14

这篇文章似乎有一个更清洁的解决方案:

只需使用ROUND,这是一个数值函数。FORMAT是一个字符串函数

于 2014-05-15T22:47:07.983 回答
4

一种可能的解决方法是在 format 之后替换逗号:

REPLACE(FORMAT(contracts.charge,2),',','') AS "contracts charge"
于 2011-12-15T11:51:21.320 回答
-1

Invertir,到十进制。到英里 REPLACE(REPLACE(REPLACE(FORMAT(contracts.charge,2),',','-'),'.',','),'-','.') AScontracts_charge

于 2014-01-30T17:47:01.607 回答