Вопрос:

Добавление текста к результату математической операции в sqlite

sqlite append

38 просмотра

1 ответ

12 Репутация автора

Я конвертирую байты в читабельный формат. В конце результата он должен быть добавлен, если это MB или KB или просто байты. Я не могу найти правильный способ сделать это.

Sqlite таблицы содержимого.

+-----------+
| Data Sent |
+-----------+
| 17210032  |
+-----------+
| 60080929  |
+-----------+
| 64061961  |
+-----------+
| 29894     |
+-----------+
| 862       |
+-----------+

Sqlite Code для преобразования из байтов в человекочитаемый

select "Data Sent",
CASE 
    WHEN "Data Sent" > 1024*1024 then round("Data Sent"*1.0/(1024*1024), 2)
    WHEN "Data Sent" > 1024 then round("Data Sent"*1.0/(1024), 2)
    WHEN "Data Sent" < 1024 then "Data Sent"
ELSE NULL
end as conv_data
from testdb

Первое условие - преобразовать байты в мегабайты. Второй - для КБ, последний - для байтов.

Ожидаемый результат:

+-----------+-----------+
| Data Sent | conv_data |
+-----------+-----------+
| 17210032  | 16.41 MB  |
+-----------+-----------+
| 60080929  | 57.3 MB   |
+-----------+-----------+
| 64061961  | 61.09 MB  |
+-----------+-----------+
| 29894     | 29.19 KB  |
+-----------+-----------+
| 862       | 862 bytes |
+-----------+-----------+

но текущий код просто показывает преобразованные числа. Как мы можем добавить MB, KB, байты к результату?

Автор: d95mtrx Источник Размещён: 01.01.2018 08:20

Ответы (1)


1 плюс

22682 Репутация автора

Решение

Вы можете использовать конкатенацию SQLite, ||например:

SELECT "Data Sent",
CASE 
        WHEN "Data Sent" < 1024 THEN "Data Sent" || " Bytes."
        WHEN "Data Sent" > 1024  AND "Data Sent" < 1048576 THEN round("Data Sent" * 1.0 / 1024,2) || " KB."
        WHEN "Data Sent" > (1024 * 1024) THEN round("Data Sent" * 1.0/ (1024 * 1024),2) || " MB."
END AS conv_data
from testdb;

Заметка! Нет необходимости в предложении ELSE для проверки NULL, так как результаты будут NULL.

Результаты в: -

введите описание изображения здесь

Автор: MikeT Размещён: 01.01.2018 08:57
Вопросы из категории :
32x32