23

每次我想在零时四舍五入到小数点后 2 位,它不想四舍五入......我怎么能把它四舍五入到小数点后 2 位,最后有零,这会给我 92.00 而不是 92?

SELECT ROUND(COLUMN_NAME,2) FROM ....

它给了我

COLUMN_NAME
92

但我想要

COLUMN_NAME
92.00

我使用了 TO_CHAR 并且它有效

ROUND(TO_CHAR(COLUMN_NAME),2)

多谢你们!

4

5 回答 5

30

您可以尝试使用 TO_CHAR 函数来转换结果

例如

SELECT TO_CHAR(92, '99.99') AS RES FROM DUAL

SELECT TO_CHAR(92.258, '99.99') AS RES FROM DUAL

希望能帮助到你

于 2013-11-01T03:22:34.390 回答
7

尽量避免在查询中格式化。您应该以原始格式返回您的数据,并让接收应用程序(例如报告服务或最终用户应用程序)进行格式化,即舍入等。

在服务器中格式化数据会使您更难(甚至不可能)进一步处理数据。您通常还希望导出表格或进行一些聚合,例如 sum、average 等。由于数字以字符串 (varchar) 形式到达,通常没有简单的方法来进一步处理它们。一些报表设计者甚至会拒绝提供汇总这些“数字”的选项。

此外,最终用户将看到服务器的国家特定格式,而不是他自己的 PC。

另外,考虑舍入问题。如果您将服务器中的值四舍五入,然后仍然进行一些计算(假设客户端能够将数字字符串恢复为数字),您最终会得到错误的结果。

于 2013-11-01T06:54:37.707 回答
5

尝试使用带有 FORMAT 选项的 COLUMN 命令:

COLUMN COLUMN_NAME FORMAT 99.99
SELECT COLUMN_NAME FROM ....
于 2013-11-01T03:22:19.670 回答
3

这也有效。以下语句四舍五入到小数点后两位。

从对偶中选择 ROUND(92.258,2);

于 2018-09-19T15:41:50.210 回答
0

试试这个...

SELECT TO_CHAR(column_name,'99G999D99MI')
as format_column
FROM DUAL;
于 2020-11-01T03:03:32.383 回答