Sql server ROUND()表示sql中的结果不正确

Sql server ROUND()表示sql中的结果不正确,sql-server,oracle,tsql,rounding,Sql Server,Oracle,Tsql,Rounding,给予 如何在此处获取849299099755.30 849299099755.3 将数据类型转换为十进制 select convert(numeric(28,2),round(849299099755.3,2)) from dual; 或 对于Oracle: ROUND函数返回一个数字,ROUND(849299099755.3,2)实际上等于84929999755.3,因此它工作正常。但是,当您想要显示它时,它将使用会话的默认数字格式设置 要将其格式化为两位小数,您可以使用To_CHAR功能

给予


如何在此处获取
849299099755.30

849299099755.3

将数据类型转换为十进制

select convert(numeric(28,2),round(849299099755.3,2)) from dual;

对于Oracle:

ROUND函数返回一个数字,
ROUND(849299099755.3,2)
实际上等于
84929999755.3
,因此它工作正常。但是,当您想要显示它时,它将使用会话的默认数字格式设置

要将其格式化为两位小数,您可以使用
To_CHAR
功能,例如:

SELECT STR(ROUND(849299099755.3,2), 20, 2)

你在用什么<代码>SQL Server<代码>MySQL<代码>Oracle<代码>DB2?等等…这对我来说很好!!!然而,当我尝试在ORACLE中执行相同的操作时,它给了我错误-ORA-00936:缺少表达式,因为ORACLE也支持十进制,错误的原因是什么?不接受的原因是什么?因为我问你关于RDBMS的事,你告诉我
SQLServer
SELECT CONVERT(DECIMAL(15,2), ROUND(849299099755.3,2))
SELECT STR(ROUND(849299099755.3,2), 20, 2)
SELECT TO_CHAR(round(849299099755.3,2),'999999999990.00') FROM DUAL;