2010-11-19 3 views
1

Я пытаюсь получить размер базы данных и хочу отобразить ее в графическом интерфейсе. То, что я используюКак усечь десятичное пространство в TSQL?

select 
sum(((((CAST(saf.[size] as DECIMAL(18,4)) * 8192) /1024) /1024) /1024)) as 'Size' 
from sys.sysdatabases sdb 
inner join sys.sysaltfiles saf 
on sdb.dbid = saf.dbid 
where sdb.name = 'testDB' 

Результат будет: -

3.8329467773437500000 

Но я хочу, чтобы быть обрезаны или округлить, как это: -

3.84 
+0

На самом деле это потолок: P – Shagglez

+0

@Shagglez: Что? – Jango

ответ

1

Постарайся округление вместо этого.

http://msdn.microsoft.com/en-us/library/ms175003.aspx

я не видел свой уникальный вопрос округления. Это выглядит интересно:

http://support.microsoft.com/kb/196652

+0

-1 Потому что 3.832 .. будет раунд до 3.83 – gbn

+0

хороший улов, не видел желаемого округления. – ScottE

0
CAST(
    CEILING (
     sum(((((CAST(saf.[size] as DECIMAL(18,4)) * 8192) /1024) /1024) /1024)) 
    * 100) 
AS decimal(18,2) 
)/100 
  • 3,8329467773437500000
  • -> 383,29467773437500000 (* 100)
  • -> +384,00000000 ... (ПОТОЛОК)
  • -> 384,00 (в десятичной 18, 2)
  • -> 3.84 (/ 100)
Смежные вопросы