sql >> Databáze >  >> RDS >> Mysql

Jak seřadit sloupec mysql, který má data v Bytech KB MB GB?

Měli byste skutečně buď převést všechna data na společnou jednotku (řekněme bajty), nebo přidat sloupec, který obsahuje "měrnou jednotku" a ponechat samotný sloupec velikosti číselný.

Následující by však mělo fungovat na datech, která končí buď GB/MB/KB nebo 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. Seskupte data ve smyčce foreach

  2. Problém dočasné tabulky RODBC při připojování k MS SQL Server

  3. Převést hex na binární v MySQL

  4. Google Maps API v3:Jak nastavit úroveň přiblížení a centrum map podle polohy zadané uživatelem?