ORDER BY字符串的两个可变部分

时间:2014-01-16 09:53:52

标签: mysql sql-order-by

我被困住了,不知道如何继续前进。如何相应地订购我的结果?

10 x  2 ml
10 x 10 ml
 4 x 20 ml

10 x 2 ml应首先出现,因为2 ml小于10 ml 然后按乘法符号前面的数字排序。

2 个答案:

答案 0 :(得分:1)

这就是我解决自己问题的方法:

ORDER BY SUBSTR(size, INSTR(size, 'x') + 2) + 0, size + 0

答案 1 :(得分:0)

你可以试试这个,但它真的丑陋,特别是如果表很大并且你需要性能:

ORDER BY  TRIM(REPLACE(REPLACE(field_name,CONCAT(SUBSTRING_INDEX(field_name,'x',1),'x'),''),'ml',''))

它取代了SUBSTRING_INDEX('ABCx123ml','x',1); //带有空格的ABC和ml,调整它,只留下订单所需的值...