以升序获取表中的字母数字值

时间:2015-06-07 18:59:18

标签: mysql sql sorting sql-order-by alphanumeric

我有一张桌子食物,其中包含柱子数量(它包含值 - 10公斤,32公斤,5公斤)。我想以按顺序提取数量值。

现在我有查询:

select Quantity from Food

输出=>

10公斤

32 kg

5 kg

但预期结果是:

5 kg

10公斤

32 kg

如何在SQL中对此字母数字值进行排序?

3 个答案:

答案 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似乎为你做了那么多。这更明确,也许有价值。