sql >> Database teknologi >  >> RDS >> Mysql

Hvordan sorterer man mysql-kolonne, der har data i bytes KB MB GB?

Du bør egentlig enten konvertere alle data til en fælles enhed (f.eks. bytes) eller tilføje en kolonne, der indeholder en "måleenhed" og holde selve størrelseskolonnen numerisk.

Når det er sagt, skulle det følgende fungere på data, der ender med enten 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. Rengøring af MySQL-brugerparametre

  2. PostgreSQL jokertegn LIKE for enhver af en liste med ord

  3. Hvordan får man et tabeloprettelsesscript i MySQL Workbench?

  4. mysql_data_seek pdo tilsvarende