MySQL按行中数组的第一个元素排序

时间:2015-02-09 15:58:44

标签: php mysql arrays

我有按行和价格数组排序我的表的问题。 下面是示例行:

1) ;100
2) ;50
3) ;50;100;300
4) ;30;150

我想通过数组的第一个元素订购。当我通过价格行ASC订购时,我得到:

1) ;100
2) ;30;150
3) ;50
4) ;50;100;300

这是错误的结果,因为“100”应该是最后的...... 我试过了:

ORDER BY CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(`price`, ';', 2), ';', 1) AS INT(3) ASC

但仍然错了......有任何线索吗?

1 个答案:

答案 0 :(得分:1)

你非常接近。如果我这样做,我会使用(http://sqlfiddle.com/#!2/f57af/6/0

 ORDER BY 0+TRIM(LEADING ';' FROM price)

这可以通过删除任何分号来实现,然后(通过0+技巧)将price列的初始字符视为整数,而不是文本。

您也可以

ORDER BY 0+SUBSTRING_INDEX(SUBSTRING_INDEX(val,';',2), ';', -1)

ORDER BY CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(val,';',2), ';', -1) AS INTEGER)

你有两个问题。首先,您的外部SUBSTRING_INDEX操作需要第三个参数-1。其次,您投射为INTEGER,而不是INT(3)