2 回答

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊
當(dāng)您對(duì)它們應(yīng)用算術(shù)運(yùn)算(如加法)時(shí), SQLite會(huì)將字符串文字隱式轉(zhuǎn)換為數(shù)字。因此,當(dāng)您執(zhí)行以下操作時(shí),
它將轉(zhuǎn)換50MB為: 。 所以相加的結(jié)果將是。 所以你可以這樣做: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 級(jí)排序:
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貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊
您可以CAST
選擇size
a FLOAT
(因?yàn)樗詳?shù)字開頭),然后將其用作次要ORDER BY
標(biāo)準(zhǔn),即:
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
添加回答
舉報(bào)