我有一张桌子食物,其中包含柱子数量(它包含值 - 10公斤,32公斤,5公斤)。我想以按顺序提取数量值。
现在我有查询:
select Quantity from Food
输出=>
10公斤
32 kg
5 kg
但预期结果是:
5 kg
10公斤
32 kg
如何在SQL中对此字母数字值进行排序?
答案 0 :(得分:3)
尝试:
SELECT Quantity from Food ORDER BY CAST(Quantity as UNSIGNED) DESC;
这不理想,您应该将数量存储为整数字段,将单位存储为枚举。
答案 1 :(得分:1)
如果单位只有kg
,那么您可以尝试如下。在这里查看演示小提琴http://sqlfiddle.com/#!9/e644f/6
select Quantity from Food
order by replace(Quantity,'kg','') * 1;
答案 2 :(得分:0)
根据实际数据,您可以从值的前面获取数字部分,然后按顺序获取:
SELECT Quantity
FROM Food
ORDER BY CAST(LEFT(Quantity,INSTR(Quantity,' ')-1) AS DECIMAL) DESC;
然而,正如@Martin所说,MySQL似乎为你做了那么多。这更明确,也许有价值。