Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да сортирам mysql колона, която има данни в байтове KB MB GB?

Наистина трябва или да преобразувате всички данни в обща единица (да речем байтове), или да добавите колона, която съдържа „мерна единица“ и да запазите самата колона с размери числова.

Като каза това, следното трябва да работи върху данни, които завършват с GB/MB/KB или 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. Автоматично преобразуване на SQL заявка в ElasticSearch заявка

  2. Връщането на JSON не работи правилно

  3. Как да се свържете сигурно с MySQL база данни с помощта на SQLalchemy?

  4. Запазване на прекъсвания на редове от TextArea при писане в MySQL

  5. Улавяне на MySQL предупреждения в Python