Как усечь десятичное пространство в TSQL? - PullRequest
1 голос
/ 19 ноября 2010

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

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

Ответы [ 2 ]

1 голос
/ 19 ноября 2010

Попробуйте вместо этого выполнить округление.

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

Я не видел вашу уникальную проблему округления.Это выглядит интересно:

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

0 голосов
/ 19 ноября 2010
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 ... (CEILING)
  • -> 384,00 (до десятичного знака)18, 2)
  • -> 3,84 (/ 100)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...