Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como classificar a coluna mysql que possui dados em Bytes KB MB GB?


Você deve realmente converter todos os dados em uma unidade comum (digamos bytes) ou adicionar uma coluna que contenha uma "unidade de medida" e manter a coluna de tamanho numérica.

Dito isto, o seguinte deve funcionar em dados que terminam com GB/MB/KB ou B.
select size
  from t
 order 
    by case when size like '%GB' then power(1024, 3) * substr(size, 1, length(size) - 2)
            when size like '%MB' then power(1024, 2) * substr(size, 1, length(size) - 2)
            when size like '%KB' then power(1024, 1) * substr(size, 1, length(size) - 2)
            when size like '%B'  then                  substr(size, 1, length(size) - 1)
        end desc;


+-------+------------+
| size  | bytes      |
+-------+------------+
| 1GB   | 1073741824 |
| 10MB  | 10485760   |
| 100KB | 102400     |
| 1000B | 1000       |
+-------+------------+