sql >> Database >  >> RDS >> Mysql

Hoe sorteer ik een mysql-kolom met gegevens in Bytes KB MB GB?

Je moet echt ofwel alle gegevens converteren naar een gemeenschappelijke eenheid (zeg bytes) of een kolom toevoegen die een "maateenheid" bevat en de groottekolom zelf numeriek houden.

Dat gezegd hebbende, zou het volgende moeten werken voor gegevens die eindigen op GB/MB/KB of 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       |
+-------+------------+


  1. ID retourneren bij INSERT?

  2. SQL Server-databases verplaatsen naar de cloud

  3. Wat is de beste manier om een ​​json-string te coderen/decoderen?

  4. Is het mogelijk om een ​​standaardparameter te hebben voor een mysql-opgeslagen procedure?