Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak posortować kolumnę mysql, która zawiera dane w bajtach KB MB GB?

Naprawdę powinieneś albo przekonwertować wszystkie dane na wspólną jednostkę (powiedzmy bajty) lub dodać kolumnę, która zawiera „jednostkę miary” i zachować samą kolumnę rozmiaru jako numeryczną.

Powiedziawszy to, poniższe dane powinny działać na danych, które kończą się na GB/MB/KB lub 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy można przyspieszyć działanie sum() w MySQL?

  2. Wybierz oddzielne wiersze z dwóch tabel, uporządkuj według daty

  3. Jak zdefiniować unikatowe ograniczenie na kolumnie tabeli MySQL w Ruby on Rails 3?

  4. Jak uzyskać dostęp do internetowej bazy mysql w Androidzie?

  5. Django:sqlite dla dewelopera, mysql dla prod?