2 回答

TA貢獻1856條經驗 獲得超17個贊
當您對它們應用算術運算(如加法)時, SQLite會將字符串文字隱式轉換為數字。因此,當您執行以下操作時,
它將轉換50MB為: 。 所以相加的結果將是。 所以你可以這樣做:5050MB + 0
50
SELECT * FROM filtered
ORDER BY
case
when size like '%TB%' then 1
when size like '%GB%' then 2
when size like '%MB%' then 3
when size like '%kB%' then 4
when size like '%B%' then 5
else 6
end,
size + 0 desc
或者只有 1 級排序:
SELECT * FROM filtered
ORDER BY
size * case
when size like '%TB%' then 1024 * 1024 * 1024 * 1024
when size like '%GB%' then 1024 * 1024 * 1024
when size like '%MB%' then 1024 * 1024
when size like '%kB%' then 1024
when size like '%B%' then 1
else 1
end desc

TA貢獻1863條經驗 獲得超2個贊
您可以CAST
選擇size
a FLOAT
(因為它以數字開頭),然后將其用作次要ORDER BY
標準,即:
SELECT * FROM filtered ORDER BY case when size like '%TB%' then 1 when size like '%GB%' then 2 when size like '%MB%' then 3 when size like '%kB%' then 4 when size like '%B%' then 5 else 6 end, CAST(size AS FLOAT) DESC
添加回答
舉報