2013-02-19 4 views

ответ

3

преобразовать тип данных на DECIMAL

SELECT CONVERT(DECIMAL(15,2), ROUND(849299099755.3,2)) 

или

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

Это работает отлично для меня !!! Тем не менее, когда я попытался выполнить то же самое в ORACLE, он дал мне ошибку - ORA-00936: отсутствует выражение, поскольку decimal также поддерживается в oracle, в чем причина ошибки? –

+0

в чем причина неприемлемости? потому что я спрашиваю вас о РСУБД, и вы сказали мне «SQL Server». –

1

Для SQL Server:

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

Oracle:

Круглом фу nction возвращает NUMBER, а round(849299099755.3,2) действительно равен 849299099755.3, поэтому он работает правильно. Однако, если вы хотите отобразить его, он будет использовать настройку формата номера по умолчанию для вашего сеанса.

Чтобы отформатировать его с двумя знаками после запятой, вы можете использовать эту функцию, например .: TO_CHAR

SELECT TO_CHAR(round(849299099755.3,2),'999999999990.00') FROM DUAL;