sql >> Databasteknik >  >> RDS >> Mysql

Hur sorterar man mysql-kolumn som har data i bytes KB MB GB?

Du bör egentligen antingen konvertera all data till en gemensam enhet (säg bytes) eller lägga till en kolumn som innehåller en "måttenhet" och hålla själva storlekskolumnen numerisk.

Med det sagt bör följande fungera på data som slutar med antingen GB/MB/KB eller 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. Databasen tas inte bort när du avinstallerar Android-appen

  2. Hur kör man SQL-skript i MySQL?

  3. Så här kontrollerar du datumformatet för din Oracle-session

  4. Hur skriver man sql-frågan för att välja och gruppera efter typ och antal per typ?