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

PICO_NUM_PRETTY

Скалярная функция PICO_NUM_PRETTY преобразует число в короткую строку с суффиксом k, M, G, T, P, E, Z или Y. Каждый следующий суффикс в 1000 раз больше предыдущего.

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

Синтаксис

PICO_NUM_PRETTY ( integer decimal )

Правила

  • Число, модуль которого меньше 1000, выводится как есть, в том числе дробное число типа DECIMAL, например 1.25. У большего дробного числа функция отбрасывает дробную часть.
  • Для большего числа функция выбирает суффикс, при котором целая часть содержит от одной до трех цифр, и выводит три первые цифры числа. Если целая часть короче трех цифр, после нее ставится точка: 1.23k, 12.3k, 123k.
  • Остальные цифры отбрасываются без округления: 9999 выводится как 9.99k. Три выведенные цифры удерживают относительную погрешность ниже 1%. Так как цифры не округляются, результат никогда не больше самого числа, а выведенные цифры — это его первые цифры.
  • Между числом и суффиксом нет пробела.
  • Для чисел от 1000Y целая часть содержит больше трех цифр, например 1000Y.
  • Отрицательное число выводится со знаком минус.
  • Результат имеет тип TEXT.

Примеры

SELECT
    pico_num_pretty(999),
    pico_num_pretty(9999),
    pico_num_pretty(1234567),
    pico_num_pretty(-12345);
Результат
+-------+-------+-------+--------+
| col_1 | col_2 | col_3 | col_4  |
+================================+
| 999   | 9.99k | 1.23M | -12.3k |
+-------+-------+-------+--------+