在SQL中舍入到2个小数位

Man*_*ual 19 sql oracle rounding

每次我想要舍入到小数点后2位小数它不想舍入它...我怎么能把它四舍五入到小数点后两位小数会给我92.00而不是92?

SELECT ROUND(COLUMN_NAME,2) FROM ....
Run Code Online (Sandbox Code Playgroud)

它给了我

COLUMN_NAME
92
Run Code Online (Sandbox Code Playgroud)

但我想要

COLUMN_NAME
92.00
Run Code Online (Sandbox Code Playgroud)

我使用了TO_CHAR并且它有效

ROUND(TO_CHAR(COLUMN_NAME),2)
Run Code Online (Sandbox Code Playgroud)

多谢你们!

Roh*_*han 25

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

例如

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

SELECT TO_CHAR(92.258, '99.99') AS RES FROM DUAL
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你

  • 此答案仅允许小数点左侧最多2位数.在OP提供的具体示例中,只有两个小数位; 然而,为了使这个答案得到更广泛的应用,如果解决了小数点左边的任意数字位数,恰好是右边的两个数字,那将会很有帮助.例如,如果数据包含123.456或1234567894.83748等. (6认同)

new*_*bie 10

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

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


alz*_*mar 7

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

格式化服务器中的数据会使您更难(甚至不可能)进一步处理数据.您通常希望导出表或进行一些聚合,例如求和,平均等.当数字作为字符串(varchar)到达时,通常没有简单的方法来进一步处理它们.一些报告设计者甚至会拒绝提供聚合这些"数字"的选项.

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

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


Aar*_*ron 5

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

COLUMN COLUMN_NAME FORMAT 99.99
SELECT COLUMN_NAME FROM ....
Run Code Online (Sandbox Code Playgroud)