Перейти к содержанию

PICO_SIZE_PRETTY

Скалярная функция PICO_SIZE_PRETTY преобразует размер в байтах в строку с единицей измерения: bytes, kB, MB, GB, TB или PB. Каждая следующая единица в 1024 раза больше предыдущей. Функция работает так же, как функция pg_size_pretty в PostgreSQL, и дает те же результаты.

Функция является строгой.

Синтаксис

PICO_SIZE_PRETTY ( integer decimal )

Правила

  • Размер меньше 10240 байт выводится в байтах как есть, в том числе дробный размер типа DECIMAL, например 1.5 bytes.
  • У большего размера функция сначала отбрасывает дробную часть. Затем она выбирает наибольшую единицу измерения, в которой число не меньше 10, и округляет число до целого. Половина округляется от нуля. Число в результате не больше 10239, кроме размеров от 10240 PB.
  • Отрицательный размер выводится со знаком минус.
  • Результат имеет тип TEXT.

Примеры

SELECT
    pico_size_pretty(10239),
    pico_size_pretty(10240),
    pico_size_pretty(10485248);
Результат
+-------------+-------+-------+
| col_1       | col_2 | col_3 |
+=============================+
| 10239 bytes | 10 kB | 10 MB |
+-------------+-------+-------+

Функция удобна для вывода суммы размеров. Результат SUM для целых чисел имеет тип DECIMAL, который функция тоже принимает:

SELECT pico_size_pretty(sum(size)) FROM files;