Anda harus benar-benar mengubah semua data menjadi unit umum (misalnya byte) atau menambahkan kolom yang berisi "satuan ukuran" dan menjaga kolom ukuran itu sendiri numerik.
Karena itu, berikut ini harus bekerja pada data yang diakhiri dengan GB/MB/KB atau 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 |
+-------+------------+