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

标签 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

但还是错了......有什么线索吗?

最佳答案

你们很接近。如果我这样做,我会使用 ( 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)

关于php - MySQL 按行中数组的第一个元素排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28413867/

相关文章:

MySQL优化。为什么选项 2 比选项 1 快

Java如何填充二维数组

ruby-on-rails - Rails 4 - 验证数组中的元素

您可以使用 C 数组 "hack"windows,或者它是否以某种方式受到保护?

php - 如何使用来自 discord oauth2 登录的访问 token 来获取用户信息

php - 如果使用 cURL 或 Wget 访问页面,则在 PHP 中检测

mysql - 如果所有 fk_winnerid 都为空,我将如何使此 SQL 语句仅检索?

php - 在 Ajax 调用期间发送中间消息

php - PHP 中的 Bresenham 直线算法

java - JSP 查询减表值