select round(849299099755.3,2) from dual;
даетROUND() дают неправильный результат в SQL
849299099755.3
Как я могу получить 849299099755.30
здесь ???
select round(849299099755.3,2) from dual;
даетROUND() дают неправильный результат в SQL
849299099755.3
Как я могу получить 849299099755.30
здесь ???
преобразовать тип данных на DECIMAL
SELECT CONVERT(DECIMAL(15,2), ROUND(849299099755.3,2))
или
SELECT STR(ROUND(849299099755.3,2), 20, 2)
Это работает отлично для меня !!! Тем не менее, когда я попытался выполнить то же самое в ORACLE, он дал мне ошибку - ORA-00936: отсутствует выражение, поскольку decimal также поддерживается в oracle, в чем причина ошибки? –
в чем причина неприемлемости? потому что я спрашиваю вас о РСУБД, и вы сказали мне «SQL Server». –
Для SQL Server
:
select convert(numeric(28,2),round(849299099755.3,2)) from dual;
Oracle:
Круглом фу nction возвращает NUMBER, а round(849299099755.3,2)
действительно равен 849299099755.3
, поэтому он работает правильно. Однако, если вы хотите отобразить его, он будет использовать настройку формата номера по умолчанию для вашего сеанса.
Чтобы отформатировать его с двумя знаками после запятой, вы можете использовать эту функцию, например .: TO_CHAR
SELECT TO_CHAR(round(849299099755.3,2),'999999999990.00') FROM DUAL;
Что [РСУБД] (http://en.wikipedia.org/wiki/Relational_database_management_system) вы используете? 'SQL Server'? 'MySQL'? 'Oracle'? 'DB2'? и т. д. –
Я использую SQL-сервер –