2015-12-21 2 views
1

Как вернуть исходное значение, генерируемое pg_size_pretty в PostgreSQL.Восстановить значение от pg_size_pretty, преобразовать в bigint

SELECT 
c.relname 
,pg_size_pretty (pg_relation_size (c.oid)) 
FROM pg_class c 
ORDER BY c.relpages DESC 
LIMIT 1; 

RESULT: 
relname | pg_size_pretty 
------------------------ 
tabla | 928 MB 

мне нужно: 928 MB > 973078528

+0

Почему бы вам не просто удалить 'pg_size_pretty()' и использовать 'pg_relation_size()' непосредственно? –

+0

Только у меня есть 928 МБ – atiruz

+0

'pg_relation_size (c.oid)' (само по себе) будет определенно ** не ** возвращать '928 МБ': http://sqlfiddle.com/#!15/00ce7/1 –

ответ

1

Я не думаю, что есть встроенная функция для этого; вы просто должны сделать это долгий путь:

select split_part(pg_size_pretty, ' ', 1)::bigint * 
    case split_part(pg_size_pretty, ' ', 2) 
    when 'bytes' then 1 
    when 'kB' then 1024 
    when 'MB' then 1024*1024 
    when 'GB' then 1024*1024*1024 
    when 'TB' then 1024*1024*1024*1024::bigint 
    end 
Смежные вопросы